PHP 将数组元素转换为字符串打印“数组”


PHP Convert array element to string prints "Array"

我查询数据库以获取结果数组。

$usersArray = $db->getAllUsers();  // db-Query

如果我打印出数组的var_dump,它的内容以其他数组的形式构建:

array(9) { [0]=> **array**(1) { ["column"]=> string(20) "..." } [1]=> **array**(1) { ["column"] (remaining 8 are the same).

现在我需要将这些值(到目前为止是正确的)转换为字符串,以便:

array(9) { [0]=> **string**(1) { ["column"]=> string(20) "..." } [1]=> **string**(1) { ["column"] ....

这里和其他地方有几个答案,例如

-array_map:在这里我实际上可以将内容转换为字符串,但是 - 它打印"数组"而不是值。它尝试然后通过以下方式获取内容

$users = array_map('strval',implode( $usersArray));
$users = array_map('strval', print_r($usersArray));

这些都不起作用。

有没有一种方法可以将内容转换为字符串获取内容?还是我应该重写查询以将结果格式化为字符串?

你对类型有错误的理解,或者至少是这样:

array(9) { [0]=> **string**(1) { ["column"]=> string(20) "..." } [1]=> **string**(1) { ["column"] ....

没有任何意义。您认为您希望元素是字符串类型,但包含实际上不起作用的数组数据。您真正想要的是一个不同的数组结构,但您正朝着错误的方向前进。

您基本上有两种选择:

  1. 修改 getAllUsers() 方法,以您实际需要的结构返回数据。

  2. 收到数据后修改数据。显然没有内置函数 convert_data_to_how_i_want_them() - 因此需要对数组有基本的了解。基本上,您创建一个新数组并将所需的值复制到需要它们的位置。

在这种情况下,这样的事情应该可以解决问题:

$out = array();
foreach($in as => $value) {
    $out[] = $value['column'];
}