如何显示具有特定值/字符的数组元素?

时间:2014-09-01 05:16:22

标签: php arrays json

我有一个来自hxxp的json数组://best1st.info/Moviedb/json.php?m = tt2015381& o = json

以下是数组输出的示例:

. and so on
.
. 
[STORYLINE] => On planet Earth in 1988, young Peter Quill ( ) sits in the waiting room of a hospital...
[ALSO_KNOWN_AS] => Array
    (
        [0] => Guardianes de la galaxia = Argentina
        [1] => Qalaktikanin Mühafizeçileri = Azerbaijan
        [2] => Пазителите на Галактиката = Bulgaria (Bulgarian title)
        [3] => Guardiões da Galáxia = Brazil
    )

[RELEASE_DATES] => Array
    (
.
.
. and so on

我想检查一下" ALSO_KNOWN_AS "元素,有" 阿根廷"单词,如果" ALSO_KNOWN_AS"元素有"阿根廷"单词,然后显示它(值)。

我已经尝试这样做了(用谷歌和这里的stackoverflow搜索),但似乎我的代码不起作用,这里的某些人可以帮我修复它,这是我的代码

$url   = 'http://best1st.info/Moviedb/json.php?m=tt2015381&o=json';
$newdata = json_decode(file_get_contents($url));

$alsoKnownAs = $newdata->ALSO_KNOWN_AS;

if (in_array('Argentina', $alsoKnownAs)) {
    echo "Match found";
    // echo the-array-value
}

else
{
echo "Match not found";
return false;
} 

谢谢你

3 个答案:

答案 0 :(得分:1)

试试这个

$url   = 'http://best1st.info/Moviedb/json.php?m=tt2015381&o=json';
$newdata = json_decode(file_get_contents($url));
$found = false;

foreach($newdata->ALSO_KNOWN_AS as $value)
{
    if(strpos($value, "Argentina") !==false)
    {
        echo $value;
        echo "<br/>";
        $found = true;
    }   
}   

if($found===false)
{
    echo "Not found";
}

答案 1 :(得分:0)

function searchArray($search, $array)
{
    foreach($array as $key => $value)
    {
        if (stristr($value, $search))
        {
            return true;
        }
    }
    return false;
}

在上面的函数中,第一个参数是你要搜索的字符串,第二个参数是数组,它将使用函数stristr遍历整个数组,函数的工作是返回找到的部分为false。 / p>

注意:如果您需要区分大小写搜索而不是stristr,请使用strstrstrchr

if (searchArray('Argentina', $alsoKnownAs)) {
    echo "Match found";
    // echo the-array-value
}

else
{
echo "Match not found";
return false;
} 

答案 2 :(得分:0)

ALSO_KNOWN_AS数组中的条目不是像#34;阿根廷&#34;而是与国名和其他文本进行比较。这就是in_array()无法找到它的原因。 in_array()需要精确匹配。所以你必须检查所有项目。

我建议你用foreach循环替换if语句:

...
...
$found = false;
foreach ($alsoKnownAs as $item) {
   if (strpos($item, 'Argentina') !== false) {
      $found = true;
      break;
   }
}

if (!$found) {
  echo "Match not found";
  return false;
}

希望这会有所帮助: - )