通过foreach创建一个数组

时间:2011-02-19 04:07:00

标签: php

我正在使用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循环中形成这一点的,我很欢迎链接到引用以及其他问题(找不到任何问题)。

2 个答案:

答案 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

如果您更喜欢关联数组,则可以将图像路径用作数组键,将标题用作值。