2013-11-26 187 views
0

我在我的PHP代码的一个数组,看起来像这样:从PHP数组获取特定元素?

Array 
(
[1] => Array 
    (
     [subject_id] => 1 
     [subject] => Math 
     [default_selection] => 1 
    ) 

[2] => Array 
    (
     [subject_id] => 2 
     [subject] => Physics 
     [default_selection] => 0 
    ) 

[3] => Array 
    (
     [subject_id] => 3 
     [subject] => Chemistry 
     [default_selection] => 0 
    ) 

[4] => Array 
    (
     [subject_id] => 4 
     [subject] => Biology 
     [default_selection] => 0 
    ) 

[5] => Array 
    (
     [subject_id] => 5 
     [subject] => Statistics 
     [default_selection] => 0 
    ) 

) 

我想获得的价值[主题],其中[subject_id] = 2,是否有任何直接/快捷方式来做到这一点PHP或我需要运行一个foreach循环?

回答

2

如果您需要在相同的数据做一次就好,只需运行一个foreach循环:

<?php 
    $foundArray = null; 

    foreach ($array as $subArray) { 
     if ($subArray['subject_id'] == 2) { 
      $foundArray = $subArray; 
      break; 
     } 
    } 

    var_dump($foundArray); 
?> 

如果您需要检查subject_id的不少具有相同的数据(在相同的请求),您可以将钥匙与subject_id关联,并指这样的说法:

<?php 
    $assoc = array(); 

    foreach ($array as $subArray) { 
     $assoc[$subArray['subject_id']] = $subArray; 
    } 

    var_dump($assoc[2]); 
    var_dump($assoc[3]); 
    var_dump($assoc[4]); 
?> 
0

您可以使用array_filter选择正确的元素:

<?php 
    function getSecondSubject($element){ 
     return $element["subject_id"] == 2; 
    } 

    $only_subject_two = array_filter($all_subjects, "getSecondSubject"); 

    $subject = $only_subject_two["subject"]; 
?> 

你可以使用一些trickiness (像一个变量),使你成为subject_id寻找变数,如果你需要的话。

1

新的PHP 5.5是array_column()功能,这可能会acheive你问什么(即搜索,而无需使用foreach()):

$searchForSubjectID = 2; 
$index = array_search($searchForSubjectID, array_column($data, 'subject_id')); 
$subject = $data[$index]['subject']; 

print $subject; //prints 'Physics' 

如果你不是在PHP 5.5到目前为止,还a compatibility library for this function