У меня есть массив следующим образом
array(2) {
["operator"] => array(2) {
["qty"] => int(2)
["id"] => int(251)
}
["accessory209"] => array(2) {
["qty"] => int(1)
["id"] => int(209)
}
["accessory211"] => array(2) {
["qty"] => int(1)
["id"] => int(211)
}
}
Я пытаюсь найти способ проверить, что значение идентификатора существует в массиве и возврате bool. Я пытаюсь выяснить быстрый путь, который не требует создания цикла. Используя in_array не работала функция, и я также считал, что это довольно медленно.
В php руководстве кто-то рекомендовал использовать flip_array () и затем isset (), но я не могу заставить это работать на 2-й массив.
выполнение чего-то как
if($array['accessory']['id'] == 211)
также работал бы на меня, но я должен соответствовать всем ключам, содержащим аксессуар - не уверенный, как сделать это
Так или иначе я вращаюсь в кругах и мог использовать некоторую справку. Это кажется, что должно быть легко.Спасибо.
Эй, дардуб, вы можете использовать array_walk, чтобы проверить, находится ли конкретное значение в вашем массиве - array_walk выполняет итерацию al элементов вашего массива и применяет к ним предоставленную функцию, поэтому в основном вам нужно будет создать эту функцию. Он используется следующим образом:
$arr = array(
'one' => array('id' => 1),
'two' => array('id' => 2),
'three' => array('id' => 3)
);
function checkValue($value, $key)
{
echo $value['id'];
}
array_walk($arr, 'checkValue');
Вам просто нужно добавить к вашей функции все необходимые условия / проверки.
Надеюсь, это поможет.
М.
РЕДАКТИРОВАТЬ: Документы PHP на array_walk http://www.php.net/manual/en/function.array-walk.php
$map = array();
foreach ($arr as $v) {
$map[$v['id']] = 1;
}
//then you can just do this as when needed
$exists = isset($map[211]);
Или, если вам нужны связанные с ним данные
$map = array();
foreach ($arr as $k => $v) {
$map[$v['id']][$k] = $v;
}
print_r($map[211]);
Эта функция полезна in_array (211, $ array ['accessory']);
Она проверяет весь указанный массив, чтобы увидеть, существует ли в нем ваше значение, и возвращает истину.