2013-09-23 5 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; 
Смежные вопросы