我正在使用SimpleXML从公共Feed @ Flickr中提取图像。我想把所有拉出的图像放到一个数组中,我已经完成了:
$images = array();
foreach($channel->item as $item){
$url = $path->to->url;
$images[] = $url;
}
然后,我可以使用以下方式回显所有图像:
foreach($images as $image){
//output image
}
然后我决定我想要图像标题以及用户,所以我假设我会使用:
$images = array();
foreach($channel->item as $item){
$url = $path->to->url;
$title = $path->to->title;
$images[$title] = $url;
}
我认为这意味着使用$image['name of title']
我可以输出该标题的URL,但是当我运行它时它会产生非法的偏移错误..并且只会有标题和网址,而不是用户
谷歌搜索后我读到你不能在数组键中使用_
,但我尝试使用:
$normal = 'dddd';
$illegal = ' de___eee';
$li[$normal] = 'Normal';
$li[$illegal] = 'Illegal';
输出正确,排除_
在数组键中是非法的(我认为)。
所以现在我真的很困惑,为什么它不会运行,当我在玩游戏时使用print_r()
我注意到数组中有一些SimpleXML对象,这就是为什么我认为这是给出一个错误。
理想的输出是格式为:
的数组$image = array( 0 => array('title'=>'title of image',
'user'=>'name of user',
'url' =>'url of image'),
1 => array(....)
);
但我真的很难说我是如何从foreach
循环中形成这一点的,我很欢迎链接到引用以及其他问题(找不到任何问题)。
答案 0 :(得分:3)
$images = array();
foreach ($channel->item as $item){
$images[] = array(
'title' => $item->path->to->title,
'url' => $item->path->to->url
);
}
foreach ($images as $image) {
echo "Title: $image[title], URL: $image[url]\n";
}
答案 1 :(得分:0)
下划线不是数组键的禁止符号,这是您可能遇到的唯一问题,标题有时重叠,您可能会丢失数组中的某些项目。最正确的方法是deceze example
如果您更喜欢关联数组,则可以将图像路径用作数组键,将标题用作值。