从PHP数组获取特定元素?
问题描述:
我在我的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循环?
答
如果您需要在相同的数据做一次就好,只需运行一个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]);
?>
答
可以使用array_map
使用此功能:
function getSubject($subject) {
if ($subject['subject_id'] == 2) return $subject;
}
用法:
$subjects = array_map('getSubject', $array);
var_dump($subjects);
答
您可以使用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
寻找变数,如果你需要的话。
答
新的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。