考慮這樣的陣列:
$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"
)
);
我如何回傳true或false搜索值“Jack”。換句話說,我如何Jack在陣列中搜索單詞并回傳true或者false它是否存在?請記住,“Jack”只是值的一部分,而不是完整值,即“My name is Jack”。
這是我嘗試過的,但它回傳 false,因為我沒有提供完整的值:
if (array_search("Jack", array_column($my_array, 'Description')) !== false) {
echo 'True';
} else {
echo 'False';
}
uj5u.com熱心網友回復:
這是一種使用 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)
uj5u.com熱心網友回復:
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");
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/505790.html
