【问题标题】:Randomly group of array content in PHPPHP中随机分组的数组内容
【发布时间】:2018-04-15 21:24:06
【问题描述】:

我有这种数组

 Array(
        [0]=>Array(
                 [title]       => 'Title 0'
                 [link]        => 'Link 0'
                 [excerpt]     => 'Excerpt 0'
                 [content]     => 'Content 0'
             )
        [1]=>Array(
                 [title]       => 'Title 1'
                 [link]        => 'Link 1'
                 [excerpt]     => 'Excerpt 1'
                 [content]     => 'Content 1'
             )
        [2]=>Array(
                 [title]       => 'Title 2'
                 [link]        => 'Link 2'
                 [excerpt]     => 'Excerpt 2'
                 [content]     => 'Content 2'
             )
    )

如何在 [content],[excerpt] 和 [title],[link] 之间随机播放 所以基本上它会看起来像这样

 Array(
        [0]=>Array(
                 [title]       => 'Title 0'
                 [link]        => 'Link 0'
                 [excerpt]     => 'Excerpt 1'
                 [content]     => 'Content 1'
             )
        [1]=>Array(
                 [title]       => 'Title 1'
                 [link]        => 'Link 1'
                 [excerpt]     => 'Excerpt 2'
                 [content]     => 'Content 2'
             )
        [2]=>Array(
                 [title]       => 'Title 2'
                 [link]        => 'Link 2'
                 [excerpt]     => 'Excerpt 0'
                 [content]     => 'Content 0'
             )
    )

如果洗牌整个数组内容我可以这样做,但这种情况我仍然感到困惑,任何人都可以帮助我吗?

谢谢

帕蒂

【问题讨论】:

  • 您希望 excerptcontents 更改,而不是 titlelink
  • @Syscall 是的,这是正确的,但在 1 种情况下,摘录和内容必须像标题和链接一样保持在一起

标签: php arrays shuffle


【解决方案1】:

您可以使用array_column() 获取值,然后随机播放键,最后使用相同的“随机”键更新内容:

$array = array(
    array(
        'title'   => 'Title 0',
        'link'    => 'Link 0',
        'excerpt' => 'Excerpt 0',
        'content' => 'Content 0'
    ),
    array(
        'title'   => 'Title 1',
        'link'    => 'Link 1',
        'excerpt' => 'Excerpt 1',
        'content' => 'Content 1'
    ),
    array(
        'title'   => 'Title 2',
        'link'    => 'Link 2',
        'excerpt' => 'Excerpt 2',
        'content' => 'Content 2'
    )
);

// get data
$excerpts = array_column($array, 'excerpt');
$contents = array_column($array, 'content');
// get keys and shuffle them
$keys = array_keys($array);
shuffle($keys);
// iterate over array (and pass $values as reference)
foreach ($array as $key => &$values) {
    // get the new shuffled key
    $rand_key = $keys[$key];
    // update content
    $values['excerpt'] = $excerpts[$rand_key];
    $values['content'] = $contents[$rand_key];
}
print_r($array);

可以输出:

Array
(
    [0] => Array
        (
            [title] => Title 0
            [link] => Link 0
            [excerpt] => Excerpt 0
            [content] => Content 0
        )

    [1] => Array
        (
            [title] => Title 1
            [link] => Link 1
            [excerpt] => Excerpt 2
            [content] => Content 2
        )

    [2] => Array
        (
            [title] => Title 2
            [link] => Link 2
            [excerpt] => Excerpt 1
            [content] => Content 1
        )

)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多