Related
I have an object of json type column in my table (properties) in MySQL like:
[
{
"unit": "2",
"floor": "1",
"price": "6000000",
"toilet": "2",
"balcony": "2",
"bedrooms": "2",
"customer": "3",
"bathrooms": "3",
"flat_name": "1A",
"flat_size": "1200",
"floor_plan": "217",
"price_per_sqft": "5000"
},
{
"unit": "2",
"floor": "1",
"price": "5000000",
"toilet": "2",
"balcony": "2",
"bedrooms": "2",
"customer": null,
"bathrooms": "3",
"flat_name": "1B",
"flat_size": "1200",
"floor_plan": "215",
"price_per_sqft": "5000"
},
{
"unit": "1",
"floor": "2",
"price": "6000000",
"toilet": "2",
"balcony": "2",
"bedrooms": "2",
"customer": null,
"bathrooms": "3",
"flat_name": "2A",
"flat_size": "1250",
"floor_plan": "216",
"price_per_sqft": "5300"
}
]
How can I update customer id, where flat_name = 1B from this object in Laravel?
I have made the solution with using loop. Thank you who reply and answer
$objectitem=Property::where("id", 1)->first();
$updatedFlatDetails= $objectitem->flat_details;
foreach ($objectitem->flat_details as $key => $singleflat){
if($singleflat['flat_name']==$item->flat_name){
$updatedFlatDetails[$key]['customer']=(string)$item->customer_id;
}
}
$objectitem->flat_details = $updatedFlatDetails;
$objectitem->save();
Use collection after fetch data from database :
$target= $collection->filter(function ($item) {
return $item->flat_name=="1B";
})->values();
or filter before fetch data use eloquent :
Model::where('flat_name','1B')->get();
Hi i have a webservice that output data with json format. I need to create a basic form with one field named: SKU and a submit button.
After client clicks Submit button, it should call the webservice passing tru a variable for example:
http://wsURL:8090/ConsultaTarjetas/ExistenciaProd/ExistenciaProd.php?token=abcbdefgh123456789&reference=$SKU, this is the variable that came from wordpress form field named SKU
and shows a json results like:
{
"success": true,
"id": "22237897",
"producto": "CAMISA MC OCEAN PACIFIC NAVY",
"tallas": [
"XS ",
"S ",
"M ",
"L ",
"XL ",
"XXL",
"3XL",
"4XL",
"1X ",
"2XL"
],
"sucursales": [
{
"nombre": "ALBROOK",
"numtienda": "8.0",
"numbodega": "0102",
"precio": "24.989999999999998",
"existencia": [
"0",
"0",
"1",
"2",
"1",
"0",
"0",
"0",
"0",
"0"
]
},
{
"nombre": "LOS PUEBLOS",
"numtienda": "5.0",
"numbodega": "0105",
"precio": "24.989999999999998",
"existencia": [
"0",
"1",
"2",
"1",
"1",
"0",
"0",
"0",
"0",
"0"
]
},
{
"nombre": "CHITRE MEN",
"numtienda": "16.0",
"numbodega": "0106",
"precio": "24.989999999999998",
"existencia": [
"0",
"1",
"0",
"2",
"0",
"0",
"0",
"0",
"0",
"0"
]
},
{
"nombre": "TERRONAL",
"numtienda": "14.0",
"numbodega": "0908",
"precio": "24.989999999999998",
"existencia": [
"0",
"1",
"2",
"2",
"0",
"0",
"0",
"0",
"0",
"0"
]
},
{
"nombre": "DAVID",
"numtienda": "9.0",
"numbodega": "0909",
"precio": "24.989999999999998",
"existencia": [
"0",
"1",
"2",
"2",
"1",
"0",
"0",
"0",
"0",
"0"
]
},
{
"nombre": "COSTAVERDE MEN",
"numtienda": "22.0",
"numbodega": "0204",
"precio": "24.989999999999998",
"existencia": [
"0",
"1",
"2",
"2",
"0",
"0",
"0",
"0",
"0",
"0"
]
},
{
"nombre": "CAROLINA 2",
"numtienda": "21.0",
"numbodega": "0111",
"precio": "24.989999999999998",
"existencia": [
"0",
"0",
"2",
"2",
"1",
"0",
"0",
"0",
"0",
"0"
]
},
{
"nombre": "CENTENNIAL",
"numtienda": "25.0",
"numbodega": "0112",
"precio": "24.989999999999998",
"existencia": [
"0",
"1",
"2",
"1",
"0",
"0",
"0",
"0",
"0",
"0"
]
},
{
"nombre": "SANTIAGO MALL",
"numtienda": "26.0",
"numbodega": "0113",
"precio": "24.989999999999998",
"existencia": [
"0",
"0",
"2",
"2",
"1",
"0",
"0",
"0",
"0",
"0"
]
},
{
"nombre": "PENONOME BOULEVARD",
"numtienda": "30.0",
"numbodega": "0117",
"precio": "24.989999999999998",
"existencia": [
"0",
"0",
"2",
"2",
"1",
"0",
"0",
"0",
"0",
"0"
]
}
]
}
and i need to construct or show a table with that json, if result is False and fails, should show a error msg
at the end table should look like this:
thank you
I am trying to parse following JSON with PHP but at the very last level ("bank") having some issues, following is the information:
JSON:
{
"loan": {
"fu": "1046",
"vb": "84",
"loan_type": "1",
"type_cocg": "14",
"meeting_place": "PLACE",
"meeting_date": "2019-05-29",
"creation_date": "2019-05-29 12:49:53",
"user_id": "1001-1556",
"member": [{
"mem_id": "1",
"name": "FIRST MEMBER",
"parentage": "PARENTAGE",
"cnic": "3393399393393",
"gender": "1",
"dob": "1994-05-29",
"marital_status": "1",
"spouse_name": "SPOUSE",
"spouse_cnic": "9939439939393",
"pres_address": "PRES ADDRESS",
"perma_address": "PERMA ADDRESS",
"mother_name": "MOTHER NAME",
"cell": "94494944949",
"loan_amount": "30000",
"network": "1",
"sim_ownership": "2",
"co_status": "3",
"occupation_category": "2",
"agri_occ": "null",
"nonagri_occ": "3",
"education": "1",
"disability": "2",
"religion": "6",
"head": "2",
"purpose": "2",
"repayment_mode": "null",
"duration": "4",
"purpose_ent": "null",
"purpose_agri": "null",
"area_unit": "2",
"agri_investment": "",
"agri_expense": "",
"purpose_livestock": "3",
"loan_id_mem": "1",
"monthly_income": "15000",
"monthly_expense": "2000",
"monthly_saving": "13000",
"yearly_saving": "156000",
"male": "2",
"female": "2",
"children": "2",
"cow": "2",
"buffalo": "2",
"goat": "2",
"sheep": "2",
"agri_area_unit": "1",
"land_own": "3",
"land_lease": "3",
"house_own": "3",
"house_rent": "3",
"caste": "CASTE",
"active_loan": "1",
"bank": [{
"id": "1",
"loan_id": "1",
"loan_mem_id": "1",
"bank_id": "1",
"bank_loan": "",
"bank_remaining": "2000",
"purpose": "1",
"purpose_agri": "16",
"purpose_livestock": "null",
"purpose_ent": "null"
}, {
"id": "2",
"loan_id": "1",
"loan_mem_id": "1",
"bank_id": "6",
"bank_loan": "",
"bank_remaining": "500",
"purpose": "3",
"purpose_agri": "16",
"purpose_livestock": "null",
"purpose_ent": "14"
}]
}, {
"mem_id": "2",
"name": "SECOND MEMBER",
"parentage": "PARENTAGE",
"cnic": "3939939393399",
"gender": "1",
"dob": "1994-05-29",
"marital_status": "1",
"spouse_name": "SPOUSE",
"spouse_cnic": "4949949494999",
"pres_address": "ADDRESS",
"perma_address": "ADDRESS",
"mother_name": "MOTHER",
"cell": "49494949494",
"loan_amount": "20000",
"network": "1",
"sim_ownership": "2",
"co_status": "2",
"occupation_category": "2",
"agri_occ": "null",
"nonagri_occ": "2",
"education": "1",
"disability": "1",
"religion": "1",
"head": "1",
"purpose": "1",
"repayment_mode": "null",
"duration": "3",
"purpose_ent": "null",
"purpose_agri": "16",
"area_unit": "1",
"agri_investment": "1500",
"agri_expense": "2000",
"purpose_livestock": "3",
"loan_id_mem": "1",
"monthly_income": "15000",
"monthly_expense": "200",
"monthly_saving": "14800",
"yearly_saving": "177600",
"male": "0",
"female": "0",
"children": "2",
"cow": "2",
"buffalo": "2",
"goat": "2",
"sheep": "2",
"agri_area_unit": "1",
"land_own": "3",
"land_lease": "3",
"house_own": "3",
"house_rent": "2",
"caste": "CASTE 2",
"active_loan": "1",
"bank": [{
"id": "3",
"loan_id": "1",
"loan_mem_id": "2",
"bank_id": "6",
"bank_loan": "",
"bank_remaining": "300",
"purpose": "1",
"purpose_agri": "43",
"purpose_livestock": "null",
"purpose_ent": "null"
}]
}]
}
}
PHP code:
$json = json_decode($content, true);
$json['loan']['fu']; // This works !
foreach($json['loan']['member'] as $item) {
$name = $item['name']; // This works !
foreach($json['loan']['member']['bank'] as $bank_item) { // THIS DOES NOT WORKS!
}
}
The last foreach loop gives out en error saying:
Notice: Undefined index: bank
Are there any clues as to what might be causing the issue, or is there some improved way of parsing the same JSON, that would be very helpful.
Your json parsing is fine. your accessing is missing index.
As the "bank" is inside an array of "member" you should access as $json['loan']['member'][0]['bank'] (the 0 is hard coded - you can switch for 1 also).
If you use for then you should do:
foreach($json['loan']['member'] as $item) {
$name = $item['name']; // This works !
foreach($item['bank'] as $bank_item) { // use $item
}
}
Use only a single foreach() and get the bank element value. If you further need to loop on bank element then you can use another foreach()
$json = json_decode($content, true);
foreach($json['loan']['member'] as $item) {
print_r($item['bank']);
foreach($item['bank'] as $bank_item) {
echo $bank_item;
}
}
DEMO: https://3v4l.org/qB8mV
You have missed that member is also multidimensional array
$json = json_decode($content, true);
/*
echo "<pre>";
print_r($json);
echo "</pre>";*/
foreach($json['loan']['member'] as $item => $value) {
$name = $value['name']; // This works !
foreach($json['loan']['member'][$item]['bank'] as $bank_item) { // THIS DOES NOT WORKS!
print_r($bank_item);
}
}
You can use array_walk_recursive() function also
$json = json_decode($content, true);
$i=0;
foreach($json['loan']['member'] as $item) {
array_walk_recursive($json['loan']['member'][$i]['bank'], function($value,$key) {
echo $key.' :'.$value ." \n";
});
$i++;
}
DEMO : https://3v4l.org/KDR6V
I have an array of object .First I shuffle it.I want to sort array based on two key
"questions": [
{
"id_question": "35",
"id_subject": "63",
"id_question_pattern": "1",
"correct_marks": "1",
"in_correct_marks": "0",
"partial_marks": "0",
"id_question_interpretation": "1",
"id_comprehension": "0",
"is_approved": "13",
"question_image": "",
"solution_image": "",
"subject_name": "subject 1",
"id_sub_subject": "112",
"sub_subject_name": "Sub Subject 2",
"id_topic": "212",
"topic_name": "Sub subject 2 topic 1",
"id_sub_topic": "31",
"sub_topic_name": "subject 1 sub topic 2 Q3",
"id_question_source": "3",
"question_source_name": "Dakshana intimal\t",
"id_difficult_level": "4",
"difficulty_name": "Difficult",
"quesion_pattern_name": "Single Correct Option Type ",
"id_status": "0",
"status_name": "Active",
"last_review_date": "2018-10-31 11:05:14",
"id_review_requirement": "2",
"id_time_for_question": "2",
"answer": "",
"is_answered": "1",
"is_visited": "1",
"mark_for_review": "1",
"is_not_answered": "1",
"id_selected_option": "",
"single_correct_option": "",
"number_of_visted": "0",
"spend_time": "0",
"multiple_correct_option": "",
"matxi_answer": "",
"id_subject_section": "",
"sequence_number": 1
},
{
"id_question": "11",
"id_subject": "6",
"id_question_pattern": "1",
"correct_marks": "2",
"in_correct_marks": "1",
"partial_marks": "0",
"id_question_interpretation": "1",
"id_comprehension": "0",
"is_approved": "13",
"question_image": "",
"solution_image": "",
"subject_name": "Mathematics",
"id_sub_subject": "5",
"sub_subject_name": "Algebra",
"id_topic": "31",
"topic_name": "Mathematical Induction",
"id_sub_topic": "44",
"sub_topic_name": "Mathematical induction 1",
"id_question_source": "3",
"question_source_name": "Dakshana intimal\t",
"id_difficult_level": "3",
"difficulty_name": "Medium",
"quesion_pattern_name": "Single Correct Option Type ",
"id_status": "0",
"status_name": "Active",
"last_review_date": "2018-10-24 16:20:13",
"id_review_requirement": "1",
"id_time_for_question": "3",
"answer": "",
"is_answered": "1",
"is_visited": "1",
"mark_for_review": "1",
"is_not_answered": "1",
"id_selected_option": "",
"single_correct_option": "",
"number_of_visted": "0",
"spend_time": "0",
"multiple_correct_option": "",
"matxi_answer": "",
"id_subject_section": "",
"sequence_number": 2
},
{
"id_question": "25",
"id_subject": "4",
"id_question_pattern": "1",
"correct_marks": "2",
"in_correct_marks": "0",
"partial_marks": "0",
"id_question_interpretation": "2",
"id_comprehension": "0",
"is_approved": "13",
"question_image": "",
"solution_image": "",
"subject_name": "Chemistry",
"id_sub_subject": "1",
"sub_subject_name": "Optics",
"id_topic": "1",
"topic_name": "Thermo dynamics",
"id_sub_topic": "46",
"sub_topic_name": "sub topic thermodyn chemistry",
"id_question_source": "3",
"question_source_name": "Dakshana intimal\t",
"id_difficult_level": "1",
"difficulty_name": "Very Easy",
"quesion_pattern_name": "Single Correct Option Type ",
"id_status": "0",
"status_name": "Active",
"last_review_date": "2018-10-26 12:05:28",
"id_review_requirement": "1",
"id_time_for_question": "1",
"answer": "",
"is_answered": "1",
"is_visited": "1",
"mark_for_review": "1",
"is_not_answered": "1",
"id_selected_option": "",
"single_correct_option": "",
"number_of_visted": "0",
"spend_time": "0",
"multiple_correct_option": "",
"matxi_answer": "",
"id_subject_section": "",
"sequence_number": 3
},
{
"id_question": "6",
"id_subject": "4",
"id_question_pattern": "1",
"correct_marks": "2",
"in_correct_marks": "0",
"partial_marks": "0",
"id_question_interpretation": "2",
"id_comprehension": "0",
"is_approved": "13",
"question_image": "",
"solution_image": "",
"subject_name": "Chemistry",
"id_sub_subject": "1",
"sub_subject_name": "Optics",
"id_topic": "1",
"topic_name": "Thermo dynamics",
"id_sub_topic": "46",
"sub_topic_name": "sub topic thermodyn chemistry",
"id_question_source": "3",
"question_source_name": "Dakshana intimal\t",
"id_difficult_level": "2",
"difficulty_name": "Easy",
"quesion_pattern_name": "Single Correct Option Type ",
"id_status": "0",
"status_name": "Active",
"last_review_date": "2018-10-24 16:15:48",
"id_review_requirement": "1",
"id_time_for_question": "2",
"answer": "",
"is_answered": "1",
"is_visited": "1",
"mark_for_review": "1",
"is_not_answered": "1",
"id_selected_option": "",
"single_correct_option": "",
"number_of_visted": "0",
"spend_time": "0",
"multiple_correct_option": "",
"matxi_answer": "",
"id_subject_section": "",
"sequence_number": 4
}
]
I want to change id_question with in_subject every time.
foreach ($questions_array as $key => $row){
$subject_sort[$key] = $row['id_subject'];
$question_pattern_sort[$key] = $row['id_question_pattern'];
}
array_multisort($question_pattern_sort, SORT_ASC, $subject_sort, SORT_ASC, $questions_array);
If I understand your question correctly, what you can do is loop through your array and set id_question = id_subject for each element of the array.
Like so:
foreach($questions_array['questions'] as $key=>$value){
$questions_array['questions'][$key]['id_question'] = $questions_array['questions'][$key]['id_subject'];
}
To sort by id_subject then id_question_pattern, I can recommend one of two approaches (depending on your php version).
The spaceship operator with usort(): (Demo)
usort($array["questions"],
function($a, $b){
return [$a['id_subject'], $a['id_question_pattern']] <=> [$b['id_subject'], $b['id_question_pattern']];
}
);
or with array_multisort() (Demo)
array_multisort(array_column($array["questions"], "id_subject"), SORT_ASC, array_column($array["questions"], "id_question_pattern"), SORT_ASC, $array["questions"]);
Take care to realize that you are wanting to sort within the questions subarray.
I have wcf web service returns daily news in json object which i convert to associative array, and i want to loop through this array to get certain data depending on some conditions (like get array when its date field = today and ignore the other data with another dates).
So I need to know how I can loop through the main array and divided it with conditions to finally get needed data.
Or if there is any other method to loop through the json object without converting to associative array?
Here is the array structure:
{"GetDailyNewsResult":
{
"IsError": false,
"ErrorMsg": "",
"DailyNews": [
{
"Date": "2016-04-18",
"LanguageID": "2",
"OuterTopic": "5",
"ReminderSectionID": "3",
"ReminderPhraseNo": "2",
"DailyNewsSections": [
{
"SectionID": "1",
"Header": "test",
"PhraseNo": "1",
"Phrase": "sergbsvbzxcvbcgh",
}
{
"SectionID": "2",
"Header": "test",
"PhraseNo": "2",
"Phrase": "fghdfyhdfgnbxc",
}
{
"SectionID": "3",
"Header": "test",
"PhraseNo": "3",
"Phrase": "dfeasertadsrtg",
}
{
"SectionID": "4",
"Header": "test",
"PhraseNo": "4",
"Phrase": "dfgbzxcvzxcv",
}
{
"SectionID": "5",
"Header": "test",
"PhraseNo": "5",
"Phrase": "sghdfgbxcvb",
}
{
"SectionID": "6",
"Header": "test",
"PhraseNo": "6",
"Phrase": "sdfagdvbxcvb",
}
{
"SectionID": "7",
"Header": "test",
"PhraseNo": "7",
"Phrase": "asdasdasd",
}
]
},
{
"Date": "2016-04-19",
"LanguageID": "2",
"OuterTopic": "5",
"ReminderSectionID": "3",
"ReminderPhraseNo": "2",
"DailyNewsSections": [
{
"SectionID": "1",
"Header": "test",
"PhraseNo": "1",
"Phrase": "jhmdfadrtgdfgfgh",
}
{
"SectionID": "2",
"Header": "test",
"PhraseNo": "2",
"Phrase": "asdfretfncvb",
}
{
"SectionID": "3",
"Header": "test",
"PhraseNo": "3",
"Phrase": "asdfgvbnvbn",
}
{
"SectionID": "4",
"Header": "test",
"PhraseNo": "4",
"Phrase": "dfghfgrrthsdvbc",
}
{
"SectionID": "5",
"Header": "test",
"PhraseNo": "5",
"Phrase": "dghdfghdfgh",
}
{
"SectionID": "6",
"Header": "test",
"PhraseNo": "6",
"Phrase": "ghdgfhdfgh",
}
{
"SectionID": "7",
"Header": "test",
"PhraseNo": "7",
"Phrase": "dfghdfghfdgh",
}
]
},
]
}
Do you need to keep the data as JSON Object? If you turn it into a json_decode($json, true)); you could loop through the data just as you would with any other array.
If you want to know how to loop through the array please provide more info about the data structure and what you want to do with it.