Это мой первый массив, в котором у меня есть корочки слова, которые я хочу массив:значение подстановок из массива, используя значения из другого массива
$needlearray = (0 => 12421, 1 => 58902, 2 => 912, 3 => 42);
Тогда второй массив содержит все слова с данными слов :
$haystackarray = (
0 => array('id' => 42, 'word' => "hello", 'otherdata' => "other"),
1 => array('id' => 12421, 'word' => "good", 'otherdata' => "other"),
2 => array('id' => 58902, 'word' => "hello", 'otherdata' => "other"),
3 => array('id' => 5222, 'word' => "hello", 'otherdata' => "other"),
4 => array('id' => 912, 'word' => "hello", 'otherdata' => "other"),
5 => array('id' => 43290, 'word' => "hello", 'otherdata' => "other"),
6 => array('id' => 2312, 'word' => "hello", 'otherdata' => "other")
);
Я хочу вывести в самый быстрый из возможных способов, используя значение $needlearray
взгляд от $haystackarray
как «идентификатор». например выход я хотел бы, используя пример выше:
$result = (
0 => array('id' => 12421, 'word' => "good", 'otherdata' => "other"),
1 => array('id' => 58902, 'word' => "hello", 'otherdata' => "other"),
2 => array('id' => 912, 'word' => "hello", 'otherdata' => "other"),
3 => array('id' => 42, 'word' => "hello", 'otherdata' => "other"),
);
Примечание:
- В настоящее время я использую
foreach
цикл с поиском массива. Это очень медленно. - Необходимо сохранить первоначальный заказ
$needlearray
. - Фактические данные могут содержать несколько тысяч значений в
$needlearray
, а также несколько тысяч массивов в$haystackarray
. - Скорость очень важна, так как это часть большого процесса.
Итак, что ты хотел, чтобы мы сделали здесь? –
Похоже, вы пытаетесь получить эквивалент всей базы данных, управляемой в памяти. Если скорость является проблемой, вы делаете это неправильно. Если эти данные не используются в базе данных, это должно быть. – durbnpoisn
'$ filter = array_intersect_key ($ haystackarray, array_intersect (array_column ($ haystackarray, 'id'), $ needlearray));' если вам нужно это делать в PHP –