#php #arrays
#php #массивы
Вопрос:
Этот код должен возвращать TRUE
значение:
<?php
$return = in_array(array(1, 2), array(1, 2));
?>
но in_array
возвращает FALSE.
Комментарии:
1. Но нет массива, содержащего массив and со значениями 1 и 2 в другом?
2. учитывая, что вы довольно новичок, взгляните на ответы и выберите то, что, по вашему мнению, является лучшим.
3. У меня есть два массива, первый (1, 2, 3, 4, 5) и, во-вторых (1, 4), я хочу проверить, находятся ли элементы из второго массива в первом. Как это сделать простым способом?
Ответ №1:
in_array
проверяет, существует ли значение в массиве.
Ваша $needle
функция вообще не существует как значение $haystack
это было бы нормально, если бы ваш $haystack
был
array(1,2,3,array(1,2))
Уведомление в этом случае array(1,2)
фактически находится внутри, как и ожидалось
Если вы хотите проверить, когда 2 массива равны, я предлагаю вам ===
оператор
($a === $b) // TRUE if $a and $b have the same key/value pairs in the same order and of the same types.
Ответ №2:
Основываясь на вашем примере, вы можете захотеть заглянуть в array_intersect(). Она сравнивает массивы таким образом, который может лучше соответствовать вашей спецификации.
Ответ №3:
Согласно руководству по PHP для in_array
, синтаксис функции:
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
Итак, вам нужно указать $needle
значение в качестве первого аргумента. Это объясняет, почему ваш пример возвращает FALSE . Однако каждый из этих примеров вернет значение TRUE:
in_array(1, array(1, 2));
in_array(2, array(1, 2));
in_array(array(1, 2), array(1, 2, array(1, 2)))
Тем не менее, это может помочь, если вы точно объясните, что вы пытаетесь сделать. Возможно, in_array
это не та функция, которая вам нужна.
Ответ №4:
Ваш первый массив не содержится во втором массиве, он равен.
Это возвращает true:
var_dump(in_array(array(1, 2), array(1, 2, array(1, 2))));
Ответ №5:
Вас интересует пересечение?
$arr1 = array(1, 2);
$arr2 = array(1, 2);
$return = array_intersect($arr1, $arr2);
if(count($return) === count($arr1)) {
// all are present in arr2
}
Ответ №6:
Первый параметр — это значение, которое вы ищете во втором параметре (массиве) http://php.net/manual/fr/function.in-array.php
Ответ №7:
вы не понимаете in_array смотрите Официальные документы:http://uk.php.net/in_array
<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');
if (in_array(array('p', 'h'), $a)) {
echo "'ph' was foundn";
}
if (in_array(array('f', 'i'), $a)) {
echo "'fi' was foundn";
}
if (in_array('o', $a)) {
echo "'o' was foundn";
}
?>
Ответ №8:
массив (1,2) находится не в массиве (1,2), а в массиве (1,2),
$return = in_array(array(1, 2), array(array(1, 2)));
вернул бы значение true. (скорее продолжение ответа yes123)
Ответ №9:
если второй массив выглядит следующим образом
array(array(1, 2));
затем верните true
Ответ №10:
В вашем случае первым параметром in_array должен быть не массив, а целое число. То, что вы делаете с этим кодом, проверяет наличие массива внутри массива, которого там нет. Правильная форма была бы:
in_array(1, array(1, 2)); // true
Комментарии:
1. это не так. Вы можете проверить наличие вложенного массива с помощью in_array. Я объяснил это в своем ответе
2. Это верно для представленного здесь случая, в котором пользователь ищет целое число внутри массива.