PHP - รับชื่อคีย์ของค่าอาร์เรย์


157

ฉันมีอาร์เรย์ดังนี้

function example() {
    /* some stuff here that pushes items with
        dynamically created key strings into an array */

    return array( // now lets pretend it returns the created array
        'firstStringName' => $whatEver,
        'secondStringName' => $somethingElse
    );
}

$arr = example();

// now I know that $arr contains $arr['firstStringName'];

ฉันจำเป็นต้องค้นหาดัชนี$arr['firstStringName']เพื่อที่ฉันจะสามารถวนลูปผ่านarray_keys($arr)และส่งคืนสตริงคีย์'firstStringName'โดยดัชนีของมัน ฉันจะทำสิ่งนั้นได้อย่างไร


คุณสามารถทำอย่างละเอียดกับกรณีการใช้งานของสิ่งที่คุณพยายามที่จะบรรลุ?
nikc.org

คำตอบ:


332

หากคุณมีค่าและต้องการค้นหากุญแจใช้array_search()ดังนี้:

$arr = array ('first' => 'a', 'second' => 'b', );
$key = array_search ('a', $arr);

$keyจะมีคีย์สำหรับค่า'a'(นั่นคือ'first')


21
array_filter()สามารถใช้งานได้หากคุณต้องการส่งคืนผลลัพธ์ที่ตรงกันทั้งหมดแทนที่จะเป็นผลลัพธ์แรกที่ตรงกันเนื่องจากจะรักษาคีย์ไว้
Mike Lyons

5
สิ่งที่ฉันคิดว่าควรค่าที่นี่: วิธีนี้ไม่ได้ผลสำหรับฉันจนกว่าฉันจะค้นพบว่าการเรียงลำดับ (เรียงลำดับ ($ arr)) ลบชื่อคีย์และรีสอร์ตไปที่ค่าดัชนีเริ่มต้น 0,1,2 เป็นต้น ดังนั้นหากคุณกำลังเรียงลำดับให้ใช้ asort (asort ($ arr)) สิ่งนี้จะรักษาคุณค่าที่สำคัญ php.net/manual/th/function.asort.php
Rich701

63
key($arr);

จะคืนค่าคีย์สำหรับองค์ประกอบอาร์เรย์ปัจจุบัน

http://uk.php.net/manual/en/function.key.php


@AnthonyRutledge สิ่งนี้จะส่งคืนเฉพาะสิ่งที่ตัวชี้ภายในอยู่ในขณะนี้ "ชี้ไปที่" หากเราต้องการการอ้างอิงอื่นเราควรใช้วิธีการ zrvans ซึ่งตามล่าหาค่าที่ร้องขอโดยเฉพาะ
Parapluie


18

หากชื่อนั้นเป็นแบบไดนามิกคุณจะต้องมีสิ่งที่ชอบ

$arr[$key]

ซึ่งหมายความว่า $ key มีค่าของคีย์

คุณสามารถใช้array_keys()เพื่อรับคีย์ทั้งหมดของอาร์เรย์เช่น

$arr = array('a' => 'b', 'c' => 'd')
$x = array_keys($arr);

จะให้คุณ

$x = array(0 => 'a', 1 => 'c');

16

ใช่คุณสามารถ infact php เป็นหนึ่งในไม่กี่ภาษาที่ให้การสนับสนุนดังกล่าว ..

foreach($arr as $key=>$value)
{

}

นี่ไม่ใช่คำตอบที่เกี่ยวข้องตามการค้นหาและใช้เวลามากขึ้น .. การเขียนโค้ดที่มีประสิทธิภาพน้อยลง
Rishab

13

หากคุณต้องการส่งคืนองค์ประกอบอาร์เรย์ที่มีค่าเดียวกันให้ใช้array_keys()ฟังก์ชัน

$array = array('red' => 1, 'blue' => 1, 'green' => 2);
print_r(array_keys($array, 1));



4

คุณสามารถใช้ฟังก์ชั่นคีย์ของ php เพื่อรับชื่อคีย์:

<?php
    $array = array(
    'fruit1' => 'apple',
    'fruit2' => 'orange',
    'fruit3' => 'grape',
    'fruit4' => 'apple',
    'fruit5' => 'apple');

    // this cycle echoes all associative array
    // key where value equals "apple"
    while ($fruit_name = current($array)) {
      if ($fruit_name == 'apple') {
        echo key($array).'<br />';
      }
    next($array);
     }
?>

like here: PHP: key - Manual

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