Php 当我只知道字符串的一部分时,如何查找数组的索引?

Php 当我只知道字符串的一部分时,如何查找数组的索引?,php,arrays,Php,Arrays,我试图找到一个可以在数组中查找索引的函数,而我只知道字符串的一部分。 函数array_search仅在我知道整个字符串的情况下才返回索引。 当我只有数组项的子字符串时,如何获取索引/键 $array = array(0 => 'blue pants', 1 => 'red pants', 2 => 'green pants', 3 => 'green pants'); echo array_search('red', $array); 我需要回显1。使用foreach

我试图找到一个可以在数组中查找索引的函数,而我只知道字符串的一部分。
函数array_search仅在我知道整个字符串的情况下才返回索引。
当我只有数组项的子字符串时,如何获取索引/键

$array = array(0 => 'blue pants', 1 => 'red pants', 2 => 'green pants', 3 => 'green pants');

echo array_search('red', $array);
我需要回显1。

使用
foreach()
对数组和strpos()进行迭代,以便在数组元素中搜索指针

$array = [0 => 'blue pants', 1 => 'red pants', 2 => 'green pants', 3 => 'green pants'];

foreach ($array as $key => $value) {
    if (strpos($value, 'red') !== false) {
        echo "Key={$key}, Value: {$value}";
        break;
    }
}
正在工作。

使用
foreach()
在阵列和strpos()上进行迭代,以便在阵列的元素中搜索指针

$array = [0 => 'blue pants', 1 => 'red pants', 2 => 'green pants', 3 => 'green pants'];

foreach ($array as $key => $value) {
    if (strpos($value, 'red') !== false) {
        echo "Key={$key}, Value: {$value}";
        break;
    }
}

正在工作。

我从php.net获取了这个函数,该函数是从一根针的一部分中找到数组的值的。 然后使用找到的值,您可以使用array_search获得索引的值

function array_find($needle, $haystack)
{
   foreach ($haystack as $item)
   {
      if (strpos($item, $needle) !== FALSE)
      {
         return $item;
         break;
      }
   }
}


$array = array(0 => 'blue pants', 1 => 'red pants', 2 => 'green pants', 3 => 'green pants');


$completValue = array_find('red', $array);
echo array_search($completValue , $array);

我从php.net中获取了这个函数,该函数是从一根针的一部分中查找数组的值。 然后使用找到的值,您可以使用array_search获得索引的值

function array_find($needle, $haystack)
{
   foreach ($haystack as $item)
   {
      if (strpos($item, $needle) !== FALSE)
      {
         return $item;
         break;
      }
   }
}


$array = array(0 => 'blue pants', 1 => 'red pants', 2 => 'green pants', 3 => 'green pants');


$completValue = array_find('red', $array);
echo array_search($completValue , $array);

您还可以使用preg_grep,它是数组的正则表达式。
这将返回数组中的所有红色项

由于它是正则表达式,您还可以将模式设置为不包含“蓝色红领裤”,而strpos会有稍微多的问题

$return = preg_grep("/red/", $array);

var_dump($return); 
/*
array(2) {
  [1]=>
  string(9) "red pants"
  [4]=>
  string(11) "red t-shirt"
}
*/

如果要排除蓝色红领裤,请使用图案
/\b/

要使图案拾取“红色”、“红色”、“红色”,请使用
/\b/i


注意到你想要钥匙作为回报。只需执行
array\u键($return)并且您将在提到“红色”的地方获得键。

您还可以使用preg\u grep,它是数组的正则表达式。
这将返回数组中的所有红色项

由于它是正则表达式,您还可以将模式设置为不包含“蓝色红领裤”,而strpos会有稍微多的问题

$return = preg_grep("/red/", $array);

var_dump($return); 
/*
array(2) {
  [1]=>
  string(9) "red pants"
  [4]=>
  string(11) "red t-shirt"
}
*/

如果要排除蓝色红领裤,请使用图案
/\b/

要使图案拾取“红色”、“红色”、“红色”,请使用
/\b/i


注意到你想要钥匙作为回报。只需执行
array\u键($return)你会在提到“红色”的地方得到钥匙。

这正是我需要的。非常感谢:-)这正是我需要的。非常感谢:-)