ARRAY_MAP上的数组到字符串转换

时间:2019-11-12 作者:DevSem

我正在使用array\\u map对一个包含我所有的\\u octopud\\u id的数组进行排序。

var_dump($offices): 返回以下内容:

array (size=500)
  0 => 
    array (size=1)
      \'id\' => string \'1382\' (length=4)
  1 => 
    array (size=1)
      \'id\' => string \'1330\' (length=4)
我需要将该数组整数输入到“employees/”部分,但我不知道如何输入-如果我硬编码employees/6 我得到以下结果:

object(stdClass)[14592]
  public \'id\' => int 6
我会做错什么?我一直得到Notice: Array to string conversion $results=行出错。

/* Return an array of _octopus_ids */
$offices = array_map(
    function($post) {
        return array(
            \'id\' => get_post_meta($post->ID, \'_octopus_id\', true),
        );
    },
    $query->posts
);

var_dump($offices);

$results = $octopus->get_all(\'employee/\' . implode($offices));
var_dump($results);

1 个回复
SO网友:Jacob Peattie

仔细观察$offices:

array (size=500)
  0 => 
    array (size=1)
      \'id\' => string \'1382\' (length=4)
  1 => 
    array (size=1)
      \'id\' => string \'1330\' (length=4)
这不是ID数组。这是一个由数组组成的数组。$offices[0] 不是\'1382\'. 这是一个数组。所以implode() 在…上$offices 正在尝试串联数组,这是导致错误的原因。

错误的原因是您如何使用array_map. 如果要为数组中的每个帖子返回此元值,则应仅返回值,而不返回新数组:

$offices = array_map(
    function($post) {
        return get_post_meta($post->ID, \'_octopus_id\', true);
    },
    $query->posts
);
现在$offices 将是一个ID数组,可以内爆。