Это обычный простой вопрос, который меня беспокоит. У меня есть массив, хранящийся в переменной, и я хочу искать и сопоставлять значение массива строк ($ myarray) из строки, которая хранится в переменной ($ match). Как я могу сопоставить значения с помощью цикла и подсчитать его, сколько совпадений? Должен ли я использовать цикл loop или while или для каждого? Это мои выборочные данные.
$myArray = array('one', 'two', 'three', 'four', 'five');
$count = count($myArray);
$match = 'six';
$match2 = array('car', 'dog');
for ($myArray=0; $myArray < $count; $myArray++) {
if($myArray == $match){
echo 'do something';
}else{
echo 'do something';
}
}
Также возможно совместить значение одного массива с другим массивом? Например, я хочу искать все значения $ myArray и сопоставлять их со значениями $ match2 и возвращать все совпадения (например: 2 совпадения из 10 элементов)
У меня недостаточно знаний в циклах или обработке массивов. Спасибо за помощь.
Я думаю, что функция, которую вы ищете, - array_intersect()
. Вы даете эти 2 массива, и он возвращает массив, содержащий элементы, которые они имеют вместе. Затем вы можете использовать count()
для получения номера.
$matches = count(array_intersect($myArray, $match2));
Вам нужна переменная, а не ваша переменная массива, чтобы увидеть текущий индекс в вашем цикле, мы назовем этот один index
, затем вы сравните строку в этой позиции со строкой, которую хотите совместить.
$myArray = array('one', 'two', 'three', 'four', 'five');
$count = count($myArray);
$match = 'six';
$match2 = array('car', 'dog');
$numberMatches = 0;
for ($index=0; $index < $count; $index++) {
if($myArray[index] == $match){
echo "It matches" ;
$numberMatches++;
}else{
echo "It doesn' t match";
}
}
foreach
потому что то, что вы делаете, проще и понятнее. Но каждому свое, вы можете использовать все что угодно.