【发布时间】:2014-05-26 23:14:43
【问题描述】:
我不确定这个问题是否已经得到解答,但我想知道是否有一种简单的方法可以计算数组的维数而无需递归调用函数。
这是我的数组可能看起来的示例......
$a[0][1][2][3]=4;
$a[0][11][22]=33;
$a[0][111]=222;
$a[0][1][2][3][4][5][6][7]=888;
$a[0][1][2][3][4][5][6][7][8]=999;
但我的真实数组不一定是数字。
我想要输出的是上面示例中的以下值...
3、2、1、7 和 8
任何人都可以在不需要递归函数调用或大量 CPU 使用的情况下为我指出正确的方向吗?
更新:
我之所以问这个问题是因为我确实有一个大问题要解决。我在网上借用了一个函数,在使用 print_r() 函数后,它实际上将我的邻接表处理成一个数组,如下所示:
Array
(
[Pint] => Array
(
[Beer] => Array
(
[Parent] => Pint
)
[Parent] =>
)
[Into] => Array
(
[Running] => Array
(
[Group] => Array
(
[Girl] => Array
(
[Parent] => Group
)
[Guy] => Array
(
[Parent] => Group
)
[Parent] => Running
)
[Parent] => Into
)
[Parent] =>
)
)
我想要做的是使用数组中的数据形成一个句子,而不使用固定的数字或名称,因为数组名称和值(除了键Parent)会发生变化。
所以在这个数组中,我想用单词组成以下句子并遍历数组:
Desired sentence 1. A Pint of Beer(后面我会加上“A”和“of”。Pint和Beer来自数组。)
期望的句子 2. 一群女孩和男孩遇到某事(“and”、“in a”和“something”是我稍后会添加到句子中的词)
如果有一个像 foreach 这样的函数从最后一个维度开始并工作到第一个维度,那可能会有所帮助。这些句子的共同点是,最后一个维度先处理,第一个维度最后处理。
有人对答案有想法吗?
附:我更新了其他代码以使数组如下:
Array
(
[Girl] => Array
(
[Group] => Array
(
[Running] => Array
(
[Into] =>
)
)
)
[Guy] => Array
(
[Group] => Array
(
[Running] => Array
(
[Into] =>
)
)
)
[Beer] => Array
(
[Pint] =>
)
)
【问题讨论】:
-
首先 $a[0] 是 1 维,所以 $a[0][111] 将是 2 维,而不是您猜测的 1。
-
你是对的....我忘记更新了。我在 foreach 循环上想得太多了。
-
@MikeSt 查看我的更新答案.. 查看您的数据,递归深度应该不是问题。
标签: php multidimensional-array