รีเซ็ตคีย์ขององค์ประกอบอาร์เรย์ใน php?


124

คำถามคือวิธีรีเซ็ตคีย์เช่นอาร์เรย์:

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

รีเซ็ตเป็น:

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

ตรวจสอบคำตอบนี้: stackoverflow.com/questions/5943149/…
Web_Developer

คำตอบ:


295

ในการรีเซ็ตคีย์ของอาร์เรย์ทั้งหมดในอาร์เรย์:

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

ในกรณีที่คุณต้องการเพียงแค่การตั้งค่าปุ่มอาร์เรย์ระดับแรกการใช้งานโดยไม่ต้องarray_values()array_map


9
ไม่ได้รีเซ็ตคีย์ของอาร์เรย์ด้วยเหตุผลบางประการต้องใช้เพียงarray_valuesฟังก์ชัน
SSH

1
@SSH คุณใช้มันกับอาร์เรย์อาร์เรย์อย่างที่เรียกที่นี่หรือไม่?
หลอกลวง

1
ไม่ว่านั่นคือปัญหาฉันคิดว่านี่ควรจะ "รีเซ็ตคีย์ขององค์ประกอบอาร์เรย์" ไม่ใช่
SSH

3
คุณไม่จำเป็นต้องใช้ array_map: $ ret = array_values ​​($ ret); ก็เพียงพอที่จะรีเซ็ตปุ่มตัวเลข
Marek Lewandowski

2
ฉันไม่รู้ว่าการใช้ array_values ​​สำหรับการรีเซ็ตค่าเป็นเอกสารหรือไม่ แต่ควรเป็นเช่นนั้น สิ่งนี้ช่วยลดจำนวนบรรทัดที่ฉันเขียน :)
carbontwelve

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

$array = array_values($array);

ด้วยฟังก์ชันนี้คุณสามารถรีเซ็ตอาร์เรย์ของคุณได้

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

วิธีนี้ใช้ได้ผลสำหรับฉัน
Amirhossein Tarmast


8

ที่นี่คุณจะเห็นความแตกต่างระหว่างวิธีหลอกลวงที่นำเสนอเมื่อเทียบกับarray_valuesแนวทางง่ายๆ:

อาร์เรย์:

$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);

ในdecezeทางที่นี่คือผลลัพธ์ของคุณ:

$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
                )
        )
)

และนี่คือผลลัพธ์ของคุณหากคุณใช้array_valuesฟังก์ชันเท่านั้น:

$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
                )
        )
)

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

อาร์เรย์ ([0] => แอปเปิ้ล [1] => เชอร์รี่)

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

อาร์เรย์ ([0] => เชอร์รี่ [1] => แอปเปิ้ล)


-7

ฟังก์ชันเนทีฟ PHP มีอยู่สำหรับสิ่งนี้ โปรดดูhttp://php.net/manual/en/function.reset.php

เพียงทำสิ่งนี้: mixed reset ( array &$array )


4
โปรดอ่านคู่มือที่คุณกำลังเชื่อมโยง resetทำอย่างอื่น
หลอกลวง

เพียงแค่ย้ายตัวชี้ไปยังองค์ประกอบแรกของอาร์เรย์ หัวข้อเริ่มต้นค้นหาวิธีการวางคีย์ในสถานะเริ่มต้น 0, 1, 2 ... N
SlowSuperman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.