2015-04-27 2 views
-1

Так что я два массива, то первый из них, как:Поиск ключа и значения в PHP массивы

$MyArray = [ 
    ['id' => 1, number => 32], 
    ['id' => 2, number => 4] 
]; 

, а другой, как:

$OtherArray = [ 
    ['id' => 1, 'show' => X], 
    ['id' => 5, 'show' => X] 
]; 

Где X, я хочу это чтобы быть равным значению 'number' $ MyArray, где key 'id' = его id.

Если нет $MyArray.id, которая равна $OtherArray.id то она должна возвращать 0.

Я надеюсь, вы понимаете, что я имею в виду. Я пробовал все, что мог, но безуспешно.

+0

Вы что-то пробовали? (Также ваша структура массива немного неясна, сколько измерений имеет ваш массив!) – Rizier123

+0

Это недопустимый синтаксис для массива –

+0

Читайте о array_keys, in_array и array_search, чтобы решить вашу проблему – DLastCodeBender

ответ

1

Вы пробовали использовать здесь цикл foreach?

Вот краткий пример ... PHPaste Snippet

<?php 

$firstArray = array(
    array(
     "id" => 1, 
     "something" => "Hello, World!" 
    ), 
    array(
     "id" => 3, // 3 on purpose 
     "something" => "Hello, mom?" 
    ) 
); 

$secondArray = array(
    array(
     "id" => 1, 
     "thing" => null 
    ), 
    array(
     "id" => 2, 
     "thing" => null 
    ) 
); 

foreach ($firstArray as $key => $value) { 
    foreach ($secondArray as $k => $v) { 
     if ($value['id'] == $v['id']) { 
      echo "Found one!\n------\n" . print_r($value, true) . "\ncontains the same ID as\n\n" . print_r($v, true) . "\n------\n"; 
      // you may also do this if you want 
      // $secondArray[$k]['thing'] = $value['id']; 
      // this would set "thing" (in the second array) to the value of "id" (in the first array) 
     } 
    } 
} 

EDIT Вот второй пример, показывая, как вы могли бы использовать его как функцию ... PHPaste Snippet.

Примечание: Я использовал синтаксис массива OLD, потому что это легче понять новым программистам.

Таким образом, по существу, что вы делаете переборе каждого элемента в $firstArray, сравнивая его с каждым пунктом в $secondArray, делая вложенную foreach внутри стороны первого foreach, если это имеет смысл ...?

Вот что я только что сказал, в простой форме:

go through each item in array 1 
--> compare it to each item in array 2 

Вы также можете заметить, мое использование прекрасной функции РНР, print_r(). Это отображает объекты и массивы в слегка более четкой форме.

Вы также можете увидеть, что я получаю значения из массивов, используя $value['id'] и $v['id']. Они были определены в моем объявлении foreach, foreach ($firstArray as $key => $value); $value является associative array, так что вы можете просто получить значение по ключу так же, как если бы вы создали массив так:

$myArray = [ 
    "id" => 1 
]; 

и схватился значения, как это:

echo $myArray['id']; // 1 

Надеюсь, это помогло.

+0

Хотя эта ссылка может ответить на вопрос, лучше укажите основные части ответа здесь и укажите ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – Bryan

+0

@ Брайан мог бы вы прочитать мой ответ еще раз и сообщить мне, если все в порядке? – SysVoid

+0

Да, это намного лучше. Теперь ответ имеет достаточный контекст, чтобы стоять сам по себе, если ссылки когда-либо будут мертвыми. – Bryan

Смежные вопросы