JSON:忽略嵌套对象中的同名记录,并检索外部的对名称记录

时间:2013-06-23 16:31:13

标签: php arrays json api

我正在访问提供json结果的搜索API,例如:Free Search API

我想只检索对象title中的记录kwicurlresults到我的代码中。但是对象title中的urlrelated阻碍了它们。

我尝试过做一些功能:

foreach ($json->results as $item) {
if (isset($item->kwic)) {
    $rss_item = array(
        'title' => $item->title,
        'kwic' => $item->kwic,
        'url' => $item->url,
    );
    array_push($desArray, $item->kwic);
}

else {
    return false;
}
array_push($rss_array, $rss_item);

for ($i = 0; $i < 50; $i++) {
echo '<a href="' . $rss_array[$i]['url'] . '">' . $rss_array[$i]['title'] . '</a><a href="' . $rss_array [$i]['url'] . '" target="_blank">' . '<img src="http://corrupteddevelopment.com/wp-content/uploads/2012/10/open-new-tab-window-icon.jpg" width="15px" height="15px"></a><br/>';//LINE 66
echo '<hr/>';
echo '<p>' . $rss_array [$i]['kwic'] . '</p></br>';
}

它给了我部分结果,部分结果:Notice: Undefined offset: 31 in C:\xampp\htdocs\MSP\SignIn\cariFree.php on line 66。我写的时候:

if (isset($item->related)) {
return false}

它给了我完全空白的页面。 我错过了什么? 谢谢。

以下是完整代码的屏幕截图:mycode.php

1 个答案:

答案 0 :(得分:-1)

我重写了一下你的代码,我认为这是你实际应该做的,但我不确定,因为我没有完整的代码并且不能真正理解你的问题是什么(除了糟糕的编码)。

<?php

//first off use arrays instead of objects:
$json = json_decode($data, true);

foreach ( $json['results'] as $item ) {
    if ( isset($item['kwic']) ) {
        //we can push $item into the rss_array directly
        array_push($rss_array, $item); #I assume you want this here instead of outside the loop
    }
    //I removed the else since it seemed completly stupid
}

foreach ( $rss_array as $item ) {
    echo '<a href="' . $item['url'] . '">' . $item['title'] . '</a><a href="' . $item['url'] . '" target="_blank">' . '<img src="http://corrupteddevelopment.com/wp-content/uploads/2012/10/open-new-tab-window-icon.jpg" width="15px" height="15px"></a><br/>';//LINE 66
    echo '<hr/>';
    echo '<p>' . $item['kwic'] . '</p></br>';
}