Как найти значение в массиве PHP - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть несколько атрибутов в массиве. Например размер для одежды. Я хочу проверить, есть ли у меня атрибуты или нет. Если нет, я хочу отобразить ошибку в файле. И проблема в том. Почему у меня ошибка, даже если я сравниваю одну и ту же строку?

Пожалуйста, проверьте мой код ниже.

foreach ($attributeToCheck as $singleAttributeToCheck) 
            {
                if(!array_search(strtolower($singleAttributeToCheck), array_map('strtolower', array_column($attributes, 'name')))){            
                    $this->errorLog('*  ERROR   *   There is no:' . $singleAttributeToCheck);
                    return FALSE;
                }                
            }

In $attributeToCheck I have those value:
0: "Black"
1: "S"

In strtolower($singleAttributeToCheck) I have value:
"s"

array_map('strtolower', array_column($attributes, 'name')) looks like this:
0: "s"
1: "m"
2: "l"

Почему я go веду журнал ошибок? У меня есть строка "S" в моем массиве. Спасибо за помощь.

С уважением

1 Ответ

1 голос
/ 28 апреля 2020

array_search() функция находит значение и возвращает его ключ, и это не то, что здесь необходимо, вместо этого вы должны использовать функцию in_array(), которая будет возвращать значение функции

<?php
function a($v){
    return(strtolower($v));
}
$attributeToCheck  = array("Black","S");
$attributes =   array('s','m','l');
$array = array_map('a',$attributeToCheck);
foreach ($array as $value) {
    if(!in_array($value,$attributes)){
        echo "Not Found<br>";
    }
    else{
        echo "Success";
    }
}
?>

enter image description here

В вышеупомянутом выводе Not Found является результатом проверки Black в массиве и Success для проверки S .

...