gpt4 book ai didi

PHP:获取独立数组的键

转载 作者:可可西里 更新时间:2023-11-01 01:10:07 24 4
gpt4 key购买 nike

我有两个数组。

第一个数组的例子:

$arrayOne = array(    'fruit' => array(        'apples' => array(),        'oranges' => array(),        'bananas' => array()    ),    'vegetables' => array(        'tomatoes' => array(),        'carrots' => array(),        'celery' => array(),        'beets' => array        (            'bears' => array(),            'battlestar-galactica' => array()        ),    ),    'meat' => array(),    'other' => array());

第二个:

$arrayTwo = array(    'frewt' => array(        'aplz' => array(),        'orangeez' => array(),        'bunanahs' => array()    ),    'vetchteblz' => array(        'toem8ohs' => array(),        'careodds' => array(),        'sell-R-e' => array(),        'beats' => array        (            'bare z' => array(),            'tablestar-neglectia' => array()        ),    ),    'neat' => array(),    'mother' => array());

请注意,这两个数组的“格式”完全相同(相同的维数、键数、顺序等),只是键的名称不同。 (数组键基本上保存了所有数据。)

我有几个变量来处理第一个数组 ($arrayOne) 的键。例如。 $one 将处理第一个数组的第一个维度,因此它的值(字符串)将是 'fruit''vegetables''meat''other'
$two 将是 'apples''oranges''bananas''tomatoes' 'carrots' 等,你明白了。 (每个维度都有变量)
正如我所说,这些变量仅处理 $arrayOne。不过,我也希望能够处理第二个数组中的键。意思是,通过查看 $one 的值,我希望能够获得两个数组的 array_key。

最佳答案

$arrayOne = //...

$arrayTwo = //...

function getPosition(array $arr, $key) {
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr),
RecursiveIteratorIterator::SELF_FIRST);
$pos = array();
foreach ($it as $k => $v) {
if (count($pos) - 1 > $it->getDepth()) {
array_pop($pos);
$pos[$it->getDepth()]++;
}
elseif (count($pos) - 1 < $it->getDepth()) {
array_push($pos, 0);
}
else {
$pos[$it->getDepth()]++;
}
if ($k === $key) {
return $pos;
}
}
}

function getElementKey(array $arr, array $position) {
$cur = $arr;
$curkey = null;
foreach ($position as $p) {
reset($cur);
for ($i = 0; $i < $p; $i++) {
next($cur);
}
$curkey = key($cur);
$cur = current($cur);
}
return $curkey;
}

var_dump(getPosition($arrayOne, "battlestar-galactica"));
var_dump(getElementKey($arrayTwo, array(1, 3, 1)));

给出:

array(3) {  [0]=>  int(1)  [1]=>  int(3)  [2]=>  int(1)}string(19) "tablestar-neglectia"

You can feed the result of getPosition to getElementKey:

getElementKey($arrayTwo, getPosition($arrayOne, "battlestar-galactica"));

关于PHP:获取独立数组的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3116970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com