从foreach循环问题添加到多维数组

时间:2015-07-04 01:14:51

标签: php arrays wordpress loops foreach

我有一个foreach循环,它遍历帖子并执行操作(例如为每个设置$distance变量)。通过条件,它需要做两件事,它们独立工作,但我不能让它们一起工作。

$results[] = $value;有效,因为它添加了数组($value

$results['distance'] = $distance;单独使用,但我需要包含$value数组。

如果我同时使用它们,则会产生两倍于应有的数组。距离应该包含在值中。如果我执行array_push它也可以,但我需要指定密钥。

foreach ($posts as $key => $value) {
  $loop->the_post();
  $result_lat = get_post_meta( $value->ID, 'latitude', true );
  $result_long = get_post_meta( $value->ID, 'longitude', true );
  $distance = round(calc_distance($input_lat, $input_lng, $result_lat, $result_long, "M"));

  // add item to results if within distance
  if ($distance < $_GET['within']) {
    $results[] = $value;
    $results['distance'] = $distance; // add distance to array
  }
}

2 个答案:

答案 0 :(得分:4)

使用单个多维数组存储值:

foreach ($posts as $key => $value) {
    #..
    $results[$key]["values"] = $value;  
    $results[$key]["distance"] = $distance;
}
#show first row
print_r( array_values($results)[0] );
#iterate
foreach ($results as $r_key => $r_value) {
    print_r($r_value["distance"]);
}

答案 1 :(得分:0)

  

距离应该包含在值

那你为什么不这样做呢?在将$distance放入$value数组之前,将$value放入$results

$value['distance'] = $distance;
$results[] = $value;