Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.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_Logic - Fatal编程技术网

Php 数组键由另一个数组值组成

Php 数组键由另一个数组值组成,php,arrays,logic,Php,Arrays,Logic,我有一个数组$params,包含以下内容: Array( 0 => "array" 1 => "arrayName" //variable 2 => "key1" //optional&variable ie. 0 or 'foo' 3 => "key2" //optional&variable ie. 0 or 'foo' //etc. ) 此外,我还有一个stdObject,它包含所请求页面的所有变量(MVC样式)。 因此,我可以

我有一个数组$params,包含以下内容:

Array(
  0 => "array"
  1 => "arrayName" //variable
  2 => "key1" //optional&variable ie. 0 or 'foo'
  3 => "key2" //optional&variable ie. 0 or 'foo'
  //etc.
)
此外,我还有一个stdObject,它包含所请求页面的所有变量(MVC样式)。 因此,我可以在其中设置一个数组,如下所示:

$std = new stdObject();
$std->arrayName->array('foo', 'bar');
现在我需要$std数组的第一个值。因此,我在$params中使用“key1”参数,并将其设置为“0”,这样它将选择$std->arrayName[0]值('foo')。请注意,我没有使用“key2”参数,因为我不想选择$std->arrayName[key1][key2]

但是如果我需要嵌套数组的值呢

$std = new stdObject();
$std->arrayName->array('foo', array('bar', 'fish'));
我将通过将“key1”参数设置为1并将“key2”参数设置为1来请求$std->arrayName[1][1]值('fish')。因此,它将选择$std->arrayName[key1][key2]

但是如果我有10个相互嵌套的数组呢?不太可能,但这是可能的。我想选择$std->arrayName[key1][key2][key3][…][key10]来选择位于那里的某个值。 例如:$std->arrayName[0][3][4][6][2][9][foo'][bar][9][2]

因此,我的问题是:如何通过在另一个数组($params)中定义的值来选择某个数组(arrayName)的值,该数组($params)充当第一个数组(arrayName)的键。但是,键的数量(以$params为单位的值)是可选的


也许这个问题不完全可以理解,所以请随意询问更多信息。

您需要循环键数组,并将每个级别分配给一个变量,直到到达末尾时,您应该得到所需的值

类似这样的内容(未测试,无错误检查):


这个问题我已经读了两遍,仍然不知道是关于什么的。您最好修改示例,使其具有相似的键名,因为
key\u name\u 1
foo
@zerkms的关系并不明显。我更改了问题。更好理解吗?不。就我个人而言,我仍然没有看到
fish
key1
fish=value,key1=key之间的任何联系。其中,key1是一个变量值,可以设置为0、1、2、“foo”或“bar”来选择某个特定值value@Jelmer这相对简单,不过如果您至少在其中添加一个
isset()
检查,以确保在keys数组引用不存在的内容时不会触发大量错误,这将是一个好主意。这类事情开始变得有趣的地方是,当您想要获取对键数组所描述的项的引用时,您必须非常小心,不要修改输入数组。是的,我知道;)为了便于理解,我把这部分从问题中删去:)谢谢你的提示。对其他很多人都有帮助。
function array_value_at ($array, $keys) {
  foreach ($keys as $key) {
    $array = $array[$key];
  }
  return $array;
}