2016-10-17 2 views
0

У меня проблема при сравнении двух массивов и результатов печати с использованием php. Я объясняю свой код ниже.Как найти значение из массива с помощью PHP

$comment = json_encode(array(array('day_id' => '2', 'comment' => 'vodka1'), array('day_id' => '3', 'comment' => 'vodka2'))); 
$result = json_encode(array(array('day_id' => '1', 'restaurant' => '193'), array('day_id' => '2', 'restaurant' => '193'), array('day_id' => '3', 'restaurant' => '193'))); 
$arrComment = json_decode($comment, true); 
$arrResult = json_decode($result, true); 
foreach($arrResult AS $keyResult => $dataResult){ 
    $day_id = $dataResult['day_id']; 
    $restaurant = $dataResult['restaurant']; 
    $strComment = ''; 
    $getKey=''; 
    $getKey = array_search($day_id, array_column($arrComment, 'day_id')); 
    if($getKey ==''){ 
     $strComment = ''; 
    }else{ 
     $strComment = $arrComment[$getKey]['comment']; 
    } 
    $insertintodetails[]=array("day_id"=>$day_id,"rest"=>$restaurant,"comment"=>$strComment); 
} 
echo json_encode($insertintodetails); 

Здесь я получаю результат ниже.

[{"day_id":"1","rest":"193","comment":""},{"day_id":"2","rest":"193","comment":""},{"day_id":"3","rest":"193","comment":"vodka2"}] 

Но мой результат должен появиться, как показано ниже.

[{"day_id":"1","rest":"193","comment":""},{"day_id":"2","rest":"193","comment":"vodka1"},{"day_id":"3","rest":"193","comment":"vodka2"}] 

Вот мое требование, если day_id from $result нет в $comment, то соответствующее поле комментария останется пустым. Пожалуйста, помогите мне.

ответ

0

Попробуйте это решение, оно будет работать нормально. здесь array_search() всегда возвращает ключ или логическое значение (http://php.net/manual/en/function.array-search.php).

Так что просто нужно проверить $getKey является ложным или любым ключом.

$comment = json_encode(array(array('day_id' => '2', 'comment' => 'vodka1'), array('day_id' => '3', 'comment' => 'vodka2'))); 
$result = json_encode(array(array('day_id' => '1', 'restaurant' => '193'), array('day_id' => '2', 'restaurant' => '193'), array('day_id' => '3', 'restaurant' => '193'))); 
$arrComment = json_decode($comment, true); 
$arrResult = json_decode($result, true); 

foreach($arrResult as $keyResult => $dataResult){ 
    $day_id = $dataResult['day_id']; 
    $restaurant = $dataResult['restaurant']; 
    $strComment = ''; 
    $getKey=''; 
    $getKey = array_search($day_id, array_column($arrComment, 'day_id')); 

    if(is_numeric($getKey)){ 
     $strComment = $arrComment[$getKey]['comment']; 
    }else{ 
     $strComment = ''; 
    } 
    $insertintodetails[]=array("day_id"=>$day_id,"rest"=>$restaurant,"comment"=>$strComment); 
} 
echo json_encode($insertintodetails); 
Смежные вопросы