2013-09-23 116 views
0

如何在循环后使用返回的数据返回$ value?我认为要在循环之前创建数组,并将其等于$ v以在循环之后使用它,但它不起作用。如何在foreach循环外使用变量

有关如何解决此问题的任何想法?

// create array 
$v = array(); 

// start loop 
foreach ($this->json_data->locations as $key => $value) { 
    if ($value->country_name == $data['city']->country_name) 
     // return $value with data 
     return $v = $value ; 
} 

echo $v->country_name 
+1

使用'break;'一旦得到该值。 –

回答

4
try this: 

$v = array(); 
foreach ($this->json_data->locations as $key => $value) { 
if ($value->country_name == $data['city']->country_name) 
{ 
    if(!in_array($value,$v)) 
    { 
    array_push($v,$value);     
    } 
} 
} 
2

试试这个

$v = array(); 
    $i=0; 
    // start loop 
       foreach ($this->json_data->locations as $key => $value) { 
        if ($value->country_name == $data['city']->country_name) 
    // return $value with data 
         $i++; 
         $v[$i] = $value ; 
       } 
    //print $v 
       print_r($v) 
0

如果喜欢用 '回归' 试试这个。

$v = iLikeUsingReturn($this,$data); 

function iLikeUsingReturn($t,$d){ 
    foreach ($t->json_data->locations as $key => $value) { 
       if ($value->country_name == $d['city']->country_name) 
        return $value ; 
    } 
    return array(); 
} 
0

我认为下面的代码会帮助你。

// create array 
    $v = array(); 
// start loop 
     foreach ($this->json_data->locations as $key => $value) { 
      if ($value->country_name == $data['city']->country_name) 
// return $value with data     
      array_push($v, $value); 
     } 
      return $v;