[英]PHP: Check if multi dimensional array contains part of a value
考慮這樣的數組:
$my_array = array(
0 => array(
"Date" => "20220901",
"Description" => "My name is Jack"
),
1 => array(
"Date" => "20220901",
"Description" => "I have a dog"
),
2 => array(
"Date" => "20220901",
"Description" => "I have a house"
)
);
如果我搜索值“Jack”,如何返回true
或false
。 換句話說,如何在數組中搜索單詞Jack
並返回true
或false
(如果存在)? 請記住,“Jack”只是值的一部分,而不是完整值,即“My name is Jack”。
這是我嘗試過的,但它返回 false,因為我沒有提供完整的值:
if (array_search("Jack", array_column($my_array, 'Description')) !== false) {
echo 'True';
} else {
echo 'False';
}
array_search 正在做嚴格的搜索,我想你可以使用 strpos() ,如下例所示。
function searchInArray($rawArray, $search, $column) {
foreach ($rawArray as $value) {
if (isset($value[$column]) && strpos($value[$column], $search) !== false) {
return true;
}
}
return false;
}
echo searchInArray($my_array, "Jack", "Description");
這是一種使用 array_filter 查找所有匹配條目的方法。 要使其成為布爾值,您可以添加前綴!!
.
你也可以使用
if ($matches) { doSomething(); } else { echo "Empty"; }
代替
if (!!$matches) { doSomething(); } else { echo "Empty"; }
這樣做的好處是,您還可以計算下面這個示例的結果。
echo count($matches);
$needle = 'Jack';
$matches = array_filter($my_array, fn($item) => false !== strpos($item['Description'], $needle));
print_r($matches);
$hasNeedle = !!$matches;
var_dump($hasNeedle);
Array
(
[0] => Array
(
[Date] => 20220901
[Description] => My name is Jack
)
)
bool(true)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.