如何将子字符串搜索到PHP数组?

时间:2016-10-04 12:44:24

标签: php arrays json

我想使用任何关键字搜索产品。

我有一个包含非常大数据的JSON文件,我已使用json_decode()将其转换为数组。我能够显示所有数据,但我想在其中搜索特定产品。无论有没有正则表达式,你能建议我做一个算法吗?

2 个答案:

答案 0 :(得分:0)

要搜索数组,您可以使用in_array(),它会搜索这些值并在找到值时返回true
如果您要查找的字符串是数组中的键/索引,则可以使用array_key_exists()。虽然,在你的情况下,听起来你正在寻找一个价值。

另一个提示,也是我个人的最爱,是array_key_exists()的替代品。如果您有一个具有短值和特定值的阵列,比如汽车制造商列表,那么您可以反转阵列并简单地测试是否设置了键。
这样的东西,换句话说:

$makers = ['BMW', 'Toyota', 'Koenigsegg');
$makers = array_flip ($makers);
if (isset ($makers[$check])) {
    echo "Found!";
}

请注意,此方法通常仅适用于边缘情况,因为通常您会传递索引而不是值,只需对其进行测试。

答案 1 :(得分:-1)

这很简单,假设你有一个像这样的数组。

<?php
  $myArray = array(
    "foo",
    "bar",
    "cat"
  )
?>

要搜索是否存在,请使用array_key_exists函数。 例如:

<?php
  $myArray = array(
    "foo",
    "bar",
    "cat"
  )
  if (array_key_exists("foo", $myArray)) {
    echo "Foo does exist";
  }
?>

if语句会说Foo确实存在,因为它在数组中。

同样适用于这些类型的数组。

<?php
  $myArray = array(
    "foo" => "a",
    "bar" => "s",
    "cat" => "d"
  )
?>

http://php.net/manual/en/function.array-key-exists.php http://www.w3schools.com/php/func_array_key_exists.asp