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