如何搜索索引多维数组的所有列

问题描述 投票:2回答:4

我试图让多维数组的索引嵌套阵列中的所有列。例:

 $array = 
 [ 
      "int" => [80,85,66],
      "text" => [57,58],
      "varchar" => [82,72,70],
      "decimal" => [60,61]
 ];

我想搜索在PHP(combinated)功能从标识获取类型是这样的:

61与58回“文本”回归“十进制”(指数)

但是,只有与阵列PHP核心功能相结合,而无需对循环

php arrays search multidimensional-array
4个回答
3
投票

我不太清楚你想要什么,但你可以检查此解决方案:

<?php

$array =
[
    "int" => [80,85,66],
    "text" => [57,58],
    "varchar" => [82,72,70],
    "decimal" => [60,61]
];

getTypeFromId(61, $array);

function getTypeFromId($index, $array) {
    foreach ($array as $k => $v) {
        if (in_array($index, $v)) {
            echo "With " . $index . " return " . $k;
        }
    }
}

结果:

With 61 return decimal

2
投票

参照从PHP文件link评论。

$array = 
[ 
      "int" => [80,85,66],
      "text" => [57,58],
      "varchar" => [82,72,70],
      "decimal" => [60,61]
];
function recursive_array_search($needle,$haystack) {
    foreach($haystack as $key=>$value) {
        $current_key=$key;
        if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
            return $current_key;
        }
    }
    return false;
}

echo recursive_array_search(61,$array); // decimal
echo recursive_array_search(58,$array); // text

1
投票

在这里,我们过滤原始阵列包含只包含想要的数字阵列。然后,我们只是得到一个剩余元的密钥。 (假设所有的号是唯一的。)

<?php

$array = 
[ 
    "int" => [80,85,66],
    "text" => [57,58],
    "varchar" => [82,72,70],
    "decimal" => [60,61]
];

$target = 70;
$filtered = array_filter($array, function($v) use ($target) {
    return in_array($target, $v);
});

echo key($filtered);

输出:

varchar

0
投票

如果你不反对的foreach,你可以遍历您的阵列,每个子阵列,直到你匹配您的项目。

<?php
$array = 
[ 
    "int"     => [80,85,66],
    "text"    => [57,58],
    "varchar" => [82,72,70],
    "decimal" => [60,61]
];

function find_type($needle, $array)
{
    foreach($array as $type => $sub)
        foreach($sub as $int)
            if($int == $needle) return $type;
}

echo find_type(60, $array);

输出:

 decimal
© www.soinside.com 2019 - 2024. All rights reserved.