2012-05-08 69 views
78

Câu hỏi đặt ra là cách đặt lại khóa, ví dụ: cho một mảng:Đặt lại các khóa của phần tử mảng trong php?

Array ( 
    [1_Name] => Array ( 
     [1] => leo 
     [4] => NULL 
    ) 
    [1_Phone] => Array ( 
     [1] => 12345 
     [4] => 434324 
    ) 
) 

đặt lại:

Array ( 
    [1_Name] => Array ( 
     [0] => leo 
     [1] => NULL 
    ) 
    [1_Phone] => Array ( 
     [0] => 12345 
     [1] => 434324 
    ) 
) 
+0

Kiểm tra câu trả lời này: http://stackoverflow.com/questions/5943149/rebase-array-k eys-after-unsetting-elements/24332702 # 24332702 –

Trả lời

202

Để thiết lập lại các phím của tất cả các mảng trong một mảng:

$arr = array_map('array_values', $arr); 

Trong trường hợp bạn chỉ muốn đặt lại các khóa mảng cấp một, hãy sử dụng array_values() mà không cần array_map.

+3

Đây là câu trả lời đúng, cảm ơn bạn –

+1

Không đặt lại các khóa của mảng vì lý do nào đó, phải sử dụng hàm 'array_values'. –

+0

@SSH Bạn có sử dụng nó trên một mảng * của mảng *, như được gọi cho ở đây không? – deceze

13

Sử dụng array_values để thiết lập lại phím

foreach($input as &$val) { 
    $val = array_values($val); 
} 

http://php.net/array_values

118
$array[9] = 'Apple'; 
$array[12] = 'Orange'; 
$array[5] = 'Peach'; 

$array = array_values($array); 

thông qua chức năng này bạn có thể thiết lập lại mảng của bạn

$array[0] = 'Apple'; 
$array[1] = 'Orange'; 
$array[2] = 'Peach'; 
+4

Tôi nghĩ rằng đây là câu trả lời tốt hơn so với câu gửi nhưng đó chỉ là tôi –

+1

Câu trả lời của bạn khá hơn sau đó chọn một số – Vivek

6

đây bạn có thể thấy sự khác biệt giữa cách mà deceze cung cấp so với các phương pháp đơn giản array_values:

Các mảng:

$array['a'][0] = array('x' => 1, 'y' => 2, 'z' => 3); 
$array['a'][5] = array('x' => 4, 'y' => 5, 'z' => 6); 

$array['b'][1] = array('x' => 7, 'y' => 8, 'z' => 9); 
$array['b'][7] = array('x' => 10, 'y' => 11, 'z' => 12); 

Trong deceze cách, đây là đầu ra của bạn:

$array = array_map('array_values', $array); 
print_r($array); 

/* Output */ 

Array 
(
    [a] => Array 
     (
      [0] => Array 
       (
        [x] => 1 
        [y] => 2 
        [z] => 3 
       ) 
      [1] => Array 
       (
        [x] => 4 
        [y] => 5 
        [z] => 6 
       ) 
     ) 
    [b] => Array 
     (
      [0] => Array 
       (
        [x] => 7 
        [y] => 8 
        [z] => 9 
       ) 

      [1] => Array 
       (
        [x] => 10 
        [y] => 11 
        [z] => 12 
       ) 
     ) 
) 

Và đây là đầu ra của bạn nếu bạn chỉ sử dụng array_values chức năng:

$array = array_values($array); 
print_r($array); 

/* Output */ 

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [x] => 1 
        [y] => 2 
        [z] => 3 
       ) 
      [5] => Array 
       (
        [x] => 4 
        [y] => 5 
        [z] => 6 
       ) 
     ) 
    [1] => Array 
     (
      [1] => Array 
       (
        [x] => 7 
        [y] => 8 
        [z] => 9 
       ) 
      [7] => Array 
       (
        [x] => 10 
        [y] => 11 
        [z] => 12 
       ) 
     ) 
) 
-7

PHP chức năng có nguồn gốc tồn tại cho việc này. Xem http://php.net/manual/en/function.reset.php

Đơn giản chỉ cần làm điều này: mixed reset (array &$array)

+2

Vui lòng đọc hướng dẫn bạn ' liên kết lại với; 'reset' làm điều gì đó khác. – deceze

2
$result = ['5' => 'cherry', '7' => 'apple']; 
array_multisort($result, SORT_ASC); 
print_r($result); 

Array ([0] => táo [1] => cherry)

//... 
array_multisort($result, SORT_DESC); 
//... 

Array ([0] => cherry [1 ] => apple)

Các vấn đề liên quan