Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中为多维数组提取相等值_Php_Arrays_Multidimensional Array_Fetch_Key - Fatal编程技术网

在php中为多维数组提取相等值

在php中为多维数组提取相等值,php,arrays,multidimensional-array,fetch,key,Php,Arrays,Multidimensional Array,Fetch,Key,我有这个问题。我有一个多维json数组(不问-遗留代码)。我将其转换为PHP数组。我需要提取所有具有相同值的键(在我的示例“666”中)。我需要将每个键分配给一个单独的变量。在我的代码中,我成功地获取了密钥,但我只能将它们分配给另一个数组,或者一次分配给一个变量。请帮忙!!! 爱V 代码如下: <?php //user input $in = "666"; $outputZ = '[ {"record_id_001":"1"},

我有这个问题。我有一个多维json数组(不问-遗留代码)。我将其转换为PHP数组。我需要提取所有具有相同值的键(在我的示例“666”中)。我需要将每个键分配给一个单独的变量。在我的代码中,我成功地获取了密钥,但我只能将它们分配给另一个数组,或者一次分配给一个变量。请帮忙!!! 爱V

代码如下:

<?php
//user input
$in = "666";

$outputZ = '[
{"record_id_001":"1"},
{"record_id_002":"13"},
{"record_id_003":"666"},
{"record_id_004":"72661781"},
{"record_id_005":"8762"},
{"record_id_006":"666"},
{"record_id_007":"8762"},
{"record_id_008":"666"},
{"record_id_009":"8762"},
{"record_id_010":"8762"},
{"record_id_011":"666"}
]';

//convert json to php array
//someArray = json_decode($someJSON, true);
$decoZ = json_decode($outputZ, true);

// TESTING (move to comment latter)
//print_r ($decoZ);

//loop through each array an check for user input
//way 1: assign to new array
foreach($decoZ as $array => $number)
foreach($number as $key => $value)
    if (in_array("$in", $number)) {
        $var = $key;
        $getarray = "'" . $var . "'";
        $recnumber = array($getarray);
        print_r ($recnumber);
        }

//way 2: assign to varriable 
foreach($decoZ as $array => $number)
foreach($number as $key => $value)
    if (in_array("$in", $number)) {
        $var = $key;
        echo "$var" . " ";
        }
?>

您只需重新映射记录即可

最后,你可以像这样抓住它们

$codes666 = $ids['666'];
给予


在每次迭代中,您都会覆盖数组
$recnumber=array($getarray)

我宁愿遵循这个逻辑:

<?php
//user input
$in = "666";

$outputZ = '[
{"record_id_001":"1"},
{"record_id_002":"13"},
{"record_id_003":"666"},
{"record_id_004":"72661781"},
{"record_id_005":"8762"},
{"record_id_006":"666"},
{"record_id_007":"8762"},
{"record_id_008":"666"},
{"record_id_009":"8762"},
{"record_id_010":"8762"},
{"record_id_011":"666"}
]';

$decoZ = json_decode($outputZ, true);


// create empty array
$recnumber = [];
foreach($decoZ as $record)
{
    foreach($record as $key => $value)
    {
        // simply compare input with current value
        if ($value === $in)
        {
            // add the key to the previously created array
            $recnumber[] = $key;
        }
    }
}

var_dump($recnumber);

谢谢@Cid,这几乎是我所需要的全部,但是我需要进一步处理键,所以我需要将这个新数组中的所有值分配给一个变量。我该怎么做?(没有固定数量的结果-从2到5)。感谢动态创建的变量,如
$record\u id\u 003
$record\u id\u 006
等等?是的,我需要继续执行它们,因为它们是数据库中的id,我只需要提取那些记录,所以我需要它们作为$something。。。
Array
(
    [1] => Array
        (
            [0] => record_id_001
        )

    [13] => Array
        (
            [0] => record_id_002
        )

    [666] => Array
        (
            [0] => record_id_003
            [1] => record_id_006
            [2] => record_id_008
            [3] => record_id_011
        )

    [72661781] => Array
        (
            [0] => record_id_004
        )

    [8762] => Array
        (
            [0] => record_id_005
            [1] => record_id_007
            [2] => record_id_009
            [3] => record_id_010
        )

)
<?php
//user input
$in = "666";

$outputZ = '[
{"record_id_001":"1"},
{"record_id_002":"13"},
{"record_id_003":"666"},
{"record_id_004":"72661781"},
{"record_id_005":"8762"},
{"record_id_006":"666"},
{"record_id_007":"8762"},
{"record_id_008":"666"},
{"record_id_009":"8762"},
{"record_id_010":"8762"},
{"record_id_011":"666"}
]';

$decoZ = json_decode($outputZ, true);


// create empty array
$recnumber = [];
foreach($decoZ as $record)
{
    foreach($record as $key => $value)
    {
        // simply compare input with current value
        if ($value === $in)
        {
            // add the key to the previously created array
            $recnumber[] = $key;
        }
    }
}

var_dump($recnumber);