PHP 在多维数组中搜索子字符串

标签 php arrays substring

我正在尝试在 2 层数组的底层部分中搜索子字符串,并从顶层返回键。例如。在下面的数组中,在“A”中搜索“ca”将返回“0”和“2”(但会丢失“cattle”):

Array (
    [0] => Array (
        [A] => cat
        [B] => horses
        )
    [1] => Array (
        [A] => dog
        [B] => cattle
    )
    [2] => Array (
        [A] => cat
        [B] => sheep
    )
) 

最佳答案

你可以这样尝试:

$array = array(
    array(
        "A" => "cat",
        "B" => "horse"
    ),
    array(
        "A" => "dog",
        "B" => "cattle"
    ),
    array(
        "A" => "cat",
        "B" => "sheep"
    ),
);

$result = mySearch($array, "A", "ca");

function mySearch($array, $key, $search)
{
    $results = array();
    foreach ($array as $rootKey => $data) {
        if (array_key_exists($key, $data)) {
            if (strncmp($search, substr($data[$key], 0, 2), strlen($search)) == 0) {
                $results[] = $rootKey;
            }
        }
    }
    return $results;
}

var_dump($result);

将输出:

array(2) {
  [0]=>
  int(0)
  [1]=>
  int(2)
}

请注意,此方法编码不安全(您可以使用 mb_str* 代替 str* 函数系列,更多详细信息 here )。

关于PHP 在多维数组中搜索子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12501840/

相关文章:

javascript - 如何使用 javascript 创建动态单选按钮

php - MySQL 服务器已经消失 (PHP)

php - 为什么 MySQL 在 PHP 中不返回具有正确字符集的阿拉伯列?

php - 用php连接csv中的部分行

php - 在具有分层值的数组或 MySQL 条目中搜索

python - 我们可以检查 python 中的 string 中是否有两个或多个子字符串

带有空字符串和子字符串的 Java 序列化

Java - 为什么 str.substring(str.length()) 是可接受的代码行?

arrays - 暂时将[u8]转换为[u16]

c - 使用 stdlib.c 中的 qsort() 根据每个 *char 中的第三个字母对 C 中的字符串数组进行排序