2012-04-27 3 views
1

누구나 다차원 배열에 대한 나를 도울 수 있습니까? 좋아, 내가 그 안에 임의 배열에 원하는 배열을, 그래서 때문에 그 계층 구조 또는 인덱스 값은 배열의 원래의 배열 변경과 다를 수 있습니다 : 이것은 원래의 배열입니다임의의 PHP 다차원 배열 및 원래의 배열 인덱스를 얻을

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의 원래 배열 인덱스를 얻고 싶었다.

감사합니다.

답변

1

, 당신은 요소의 순서을 변경하지만 키를 보존하려는. 작은 수정으로이 작업을 수행 할 수 있습니다.

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; 
} 
+0

와우! 이것은 훌륭한 대답입니다, 내가 그것을 시도했을 때, 나는 요소가 위치 키가 아니라 배열 키로 변하는 것을 볼 수 있습니다. 하지만 어떻게 키 인덱스 번호를 얻을 수 있을까요? [0], 제로 내부? –

+0

당신이 무엇을 요구하고 있는지 확실하지 않습니다. 어떤 열쇠를 얻고, 어떤 정보를 얻었습니까? – Jon