【问题标题】:How can I get the keys from a dynamic multidimensional array, in PHP?如何在 PHP 中从动态多维数组中获取键?
【发布时间】:2013-05-25 13:48:50
【问题描述】:

我如何从动态多维数组中获取我使用 Shuffle 函数随机化它们的键?

假设我有这个脚本:

    function customShuffle(array &$array) {
    $firstElement = array_shift($array);
    shuffle($array);
    array_unshift($array, $firstElement);
}

$array = array(
  'row_1' => array("Bird", "Brown", "Bear", "Bangkok", "Bat"),
  'row_2' => array("Carrot", "Cat", "Crispy", "Cross", "Cable"),
  'row_3' => array("All", "Apple", "Adam", "Apart", "Air")
);

array_walk($array, function (&$array) { customShuffle($array); });

Shuffle($array);

该脚本会给我一个垂直打乱的数组,并在每个数组中打乱元素。

我尝试使用 array_keys 函数,但它一直只给我主数组键!

我需要的是获取每个子数组中每个元素的动态键,以及第一级动态数组的键,请问我该怎么做?

【问题讨论】:

    标签: php multidimensional-array shuffle array-key


    【解决方案1】:

    这很简单 :) array_walk 回调需要两个参数:值键:

    array_walk($array, function ($val, $key) { ... });
    

    【讨论】:

    • 我明白了,但我添加了一个遗漏的信息,请您查看您的答案吗?
    • 请您检查更新,它将准确解释我的期望。谢谢。
    • @MRAN 我需要 AFK 一段时间。但我稍后会在这里看看(但可能需要一段时间)。
    • 我又读了一遍这个问题。 CustomShuffle 对我来说毫无意义。你能告诉我你最初的目标是什么吗?
    • @hek2mgl:我需要了解数组和子数组元素位置的每一次变化。这个 CustomShuffle 为我提供了每个子数组以及子数组中元素的请求随机播放,但我找不到获取元素和子数组本身位置变化的方法!
    【解决方案2】:

    使用 array_map .. 键是完整的

    $array = array_map(function ($v) {
        shuffle($v);
        return $v;
    }, $array);
    

    子数组键

    $keys = array_map(function ($v) {
        return array_keys($v);
    }, $array);
    

    【讨论】:

    • 它正在工作,但我有一个用于第一级数组的固定键,尽管它们有某些键的名称!以及子级别的数组键,但我是最后一个,因为我没有为它们分配键的名称,我会尝试并回来。
    • 感谢您的倡议 :) 我确实有同样的问题 :)
    猜你喜欢
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2012-06-29
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    相关资源
    最近更新 更多