我的php数组看起来像这样:
Array (
[0] => dummy
[1] => stdClass Object (
[aid] => 1
[atitle] => Ameya R. Kadam )
[2] => stdClass Object (
[aid] => 2
[atitle] => Amritpal Singh )
[3] => stdClass Object (
[aid] => 3
[atitle] => Anwar Syed )
[4] => stdClass Object (
[aid] => 4
[atitle] => Aratrika )
) )
现在我想回复[atitle]中的值。 具体而言我想将atitle的值压缩成另一个变量。 我怎么能实现呢?
答案 0 :(得分:4)
使用PHP 5.3:
$result = array_map(function($element) { return $element->atitle; }, $array);
如果你没有5.3,你必须使匿名函数成为常规函数,并将名称作为字符串提供。
上面我错过了关于空元素的部分,使用这种方法可以使用array_filter解决:
$array = array_filter($array, function($element) { return is_object($element); });
$result = array_map(function($element) { return $element->atitle; }, $array);
如果你疯了,你可以写一行......
答案 1 :(得分:3)
您的数组声明有点像这样:
(嗯,在你真实的情况下,你可能会从数据库或类似的东西中获取你的数据 - 但这应该没问题,在这里测试)
$arr = array(
'dummy',
(object)array('aid' => 1, 'atitle' => 'Ameya R. Kadam'),
(object)array('aid' => 2, 'atitle' => 'Amritpal Singh'),
(object)array('aid' => 3, 'atitle' => 'Anwar Syed'),
(object)array('aid' => 4, 'atitle' => 'Aratrika'),
);
这意味着您可以将所有标题提取到数组中,循环遍历初始数组(不包括第一个元素,并使用每个对象的atitle
属性):
$titles = array();
$num = count($arr);
for ($i=1 ; $i<$num ; $i++) {
$titles[] = $arr[$i]->atitle;
}
var_dump($titles);
这会得到一个像这样的数组:
array
0 => string 'Ameya R. Kadam' (length=14)
1 => string 'Amritpal Singh' (length=14)
2 => string 'Anwar Syed' (length=10)
3 => string 'Aratrika' (length=8)
你现在可以implode
将所有这些变为字符串:
echo implode(', ', $titles);
你会得到:
Ameya R. Kadam, Amritpal Singh, Anwar Syed, Aratrika
答案 2 :(得分:1)
foreach($array as $item){
if(is_object($item) && isset($item->atitle)){
echo $item->atitle;
}
}
让他们进入你需要做的数组:
$resultArray = array();
foreach($array as $item){
if(is_object($item) && isset($item->atitle)){
$resultArray[] = $item->atitle;
}
}
然后resultArray是所有atitles的数组
然后你可以按照自己的意愿输出
$output = implode(', ', $resultArray);
答案 3 :(得分:0)
你有什么东西。
您可以通过
访问[atitle]
$array[1]->atitle;
答案 4 :(得分:0)
如果要在输出前检查标题是否存在,可以使用:
// generates the title string from all found titles
$str = '';
foreach ($array AS $k => $v) {
if (isset($v->title)) {
$str .= $v->title;
}
}
echo $str;
如果你想在数组中使用它,只需快速切换存储方法:
// generates the title string from all found titles
$arr = array();
foreach ($array AS $k => $v) {
if (isset($v->title)) {
$arr[] = $v->title;
}
}
echo implode(', ', $arr);
stdClass
要求您使用指针表示法->
进行引用,而数组则要求您通过索引引用它们,即[4]
。你可以参考这些:
$array[0]
$array[1]->aid
$array[1]->atitle
$array[2]->aid
$array[2]->atitle
// etc, etc.
答案 5 :(得分:0)
$yourArray = array(); //array from above
$atitleArray = array();
foreach($yourArray as $obj){
if(is_object($obj)){
$atitleArray[] = $obj->aTitle;
}
}
看看你的数组的每个元素都不是一个对象,你需要检查它。