1

任何人都可以帮助我了解多维数组吗?我有一个想要在其中随机排列数组的数组,因此它的层次结构或索引值将被更改并且与数组的原始排列不同,例如:

这是原始数组

Array(
    [0]=>Array(
             [title]       => 'Title 1'
             [description] => 'description here'
         )
    [1]=>Array(
             [title]       => 'Title 2'
             [description] => 'another description here'           
         )
    [2]=>Array(
             [title]       => 'Title Here Again'
             [description] => 'description here again'           
         )
)

这将是上面数组的原始结构,如果你随机它,假设这将是结果

这是随机数组

 Array(
        [0]=>Array(
                 [title]       => 'Title 2'
                 [description] => 'another description here'
             )
        [1]=>Array(
                 [title]       => 'Title 3'
                 [description] => 'another description again'           
             )
        [2]=>Array(
                 [title]       => 'Title 1'
                 [description] => 'description here'          
             )
    )

正如您所看到的,数组中的值在不同的位置被随机化,现在的问题是我无法获得关于如何从随机数组中获取原始数组索引的确切逻辑 -> ( [0] )。就像值'Title 1'一样,它的原始索引是[0],在它被随机编辑后它变成了[2],但我仍然希望'Title 1'被分配给索引[0]。这是关于我如何随机化数组的简短 php 代码:

foreach (shuffleThis($rss->getItems()) as $item) {

    foreach($item as $key=>$value){
        if($key=='title'){
                $title=$value;
        }
        if($key=='description'){
            $description=$value;    
        }
    }
}
function shuffleThis($list) { 
  if (!is_array($list)) return $list; 

  $keys = array_keys($list); 
  shuffle($keys); 
  $random = array(); 
  foreach ($keys as $key) { 
    $random[] = $list[$key]; 
  }
  return $random; 
}

只是想key从随机编辑中获取他们的原始数组索引。

谢谢!

4

2 回答 2

2

如果我理解正确,您想更改元素的顺序但保留键。你可以通过一个小的修改来做到这一点:

function shuffleThis($list) { 
    if (!is_array($list)) return $list; 

    $keys = array_keys($list); 
    shuffle($keys); 
    $random = array(); 
    foreach ($keys as $key) { 
        $random[$key] = $list[$key]; // CHANGE HERE that preserves the keys
    }
    return $random; 
}
于 2012-04-27T07:43:18.273 回答
1

使用字符串作为键和函数'shuffle'。
改组示例:http ://www.php.net/manual/en/function.shuffle.php#104430

于 2012-04-27T07:41:01.277 回答