2015-10-29 3 views
1

У меня есть массив $order_mealsInfo_ids, который имеет значение, как этотИспользуя массив, в котором положение в PHP

[{"meal_id":"33"},{"meal_id":"34"}]

Оба meal_id «33» и «34» имеет то же значение (STORE_NAME, franchise_id, order_datetime), так что я только хочу, чтобы получить эти значения один раз, поэтому я использую различные keyword.I хотят использовать $order_mealsInfo_ids в моем запросе, мой запрос:

$get_franchise_info="Select distinct store_name,franchise_id,order_datetime from order_main where id 
IN (".implode(',',$order_mealsInfo_ids['meal_id']).")"; 

Но его дает эту ошибку:

Notice: Undefined index: meal_id in C:\xampp\htdocs\learning\service\get_pending_orders_news.php on line 94

Warning: implode(): Invalid arguments passed in C:\xampp\htdocs\learning\service\get_pending_orders_news.php on line 94

ответ

1

[{ "meal_id": "33"}, { "meal_id": "34"}] это не массив это JSON

вам нужно преобразовать JSON в массив

`$array = json_decode($json); 
$mapedarray = array_map('current',$array); 
$data = implode(',',$mapedarray); 
echo $data; 
` 

так что вы получите 33,34

` 
$get_franchise_info="Select distinct store_name,franchise_id,order_datetime from order_main where id 
IN (".implode(',',$mapedarray).")"; 
` 

или

` 
    $get_franchise_info="Select distinct store_name,franchise_id,order_datetime from order_main where id 
    IN (".$data.")"; 
    ` 
2

В вашем случае $order_mealsInfo_ids не является массивом PHP. Это строка, содержащая массив JSON.

Пожалуйста, попробуйте следующее:

$order_mealsInfoJSON = '[{"meal_id":"33"},{"meal_id":"34"}]'; 
$order_mealsInfoArr = json_decode($order_mealsInfoJSON); // Convert JSON string to PHP array containing objects. 

$order_mealsInfoIds = array(); 
foreach($order_mealsInfoArr as $order_mealsInfo) { 
    $order_mealsInfoIds[] = $order_mealsInfo->meal_id; 
} 

$get_franchise_info="Select distinct store_name,franchise_id,order_datetime from order_main where id IN (".implode(',', $order_mealsInfoIds).")"; 
0

Используйте этот

$data_jsn = '[{"meal_id":"33"},{"meal_id":"34"}]'; 
    $data = json_decode($data_jsn,true); 
    $data_val = array_map(function($element) { 
     return $element['meal_id']; 
    }, $data); 

    $get_franchise_info="Select distinct store_name,franchise_id,order_datetime from order_main where id 
    IN (".implode(',',$data_val).")"; 
Смежные вопросы