【发布时间】:2011-09-09 20:52:36
【问题描述】:
我有一个 PHP 数组,想将其转换为字符串。
我知道我可以使用join 或implode,但在我的情况下,数组只有一项。为什么我必须在只有一项的数组中使用组合值?
这个数组是我的 PHP 函数的输出,它返回一个数组:
Array(18 => 'Something');
如何将其转换为字符串?
【问题讨论】:
-
视情况而定。给定上面的数组,你想要什么作为结果字符串?
我有一个 PHP 数组,想将其转换为字符串。
我知道我可以使用join 或implode,但在我的情况下,数组只有一项。为什么我必须在只有一项的数组中使用组合值?
这个数组是我的 PHP 函数的输出,它返回一个数组:
Array(18 => 'Something');
如何将其转换为字符串?
【问题讨论】:
有没有其他方法可以将该数组转换为字符串?
您不想将数组转换为字符串,如果我没看错的话,您想获取数组唯一元素的值。
<?php
$foo = array( 18 => 'Something' );
$value = array_shift( $foo );
echo $value; // 'Something'.
?>
使用 array_shift 您不必担心索引。
编辑:请注意,array_shift 不是唯一会返回单个值的函数。 array_pop()、current()、end()、reset(),它们都会返回一个元素。所有发布的解决方案都有效。不过,使用数组移位,您可以确保您只会获得数组的 first 值,即使有多个数组也是如此。
【讨论】:
reset 和 array_shift 之间有一个主要区别。 array_shift 将从数组中删除第一个元素并保持内部指针不变,而 reset 保留数组但重置内部指针。
还有其他方法可以转换吗 数组转换成字符串?
是的,有。 serialize()。它可以将各种数据类型(包括对象和数组)转换为字符串表示形式,您以后可以unserialize()。序列化一个关联数组,例如 Array(18 => 'Somthing') 将保留键和值:
<?php
$a = array(18 => 'Something');
echo serialize($a); // a:1:{i:18;s:9:"Something";}
var_dump(unserialize('a:1:{i:18;s:9:"Something";}')); // array(1) {
// [18]=>
// string(9) "Something"
// }
【讨论】:
将数组创建为 PHP 字符串数组的一种简单方法是:
<?PHP
$array = array("firstname"=>"John", "lastname"=>"doe");
$json = json_encode($array);
$phpStringArray = str_replace(array("{", "}", ":"),
array("array(", "}", "=>"), $json);
echo phpStringArray;
?>
【讨论】:
{、}、: 嵌入在字符串文字中,代码将无法正常工作。你需要一个合适的解析器。
var_export($array, true);,它的效果几乎相同,但效果更好。
你可以使用reset()函数,它会返回第一个数组成员。
【讨论】:
reset() 与其他数组一起使用。
implode 或 join(它们是完全相同的东西)在这里可以工作。或者,您可以直接调用 array_pop 并获取数组中唯一元素的值。
【讨论】:
如果您的目标是将数组输出到字符串以进行调试:您可以使用print_r() 函数,该函数接收表达式参数(您的数组)和可选的布尔返回参数。通常该函数用于回显数组,但如果将返回参数设置为true,它将返回数组印象。
例子:
//We create a 2-dimension Array as an example
$ProductsArray = array();
$row_array['Qty'] = 20;
$row_array['Product'] = "Cars";
array_push($ProductsArray,$row_array);
$row_array2['Qty'] = 30;
$row_array2['Product'] = "Wheels";
array_push($ProductsArray,$row_array2);
//We save the Array impression into a variable using the print_r function
$ArrayString = print_r($ProductsArray, 1);
//You can echo the string
echo $ArrayString;
//or Log the string into a Log file
$date = date("Y-m-d H:i:s", time());
$LogFile = "Log.txt";
$fh = fopen($LogFile, 'a') or die("can't open file");
$stringData = "--".$date."\n".$ArrayString."\n";
fwrite($fh, $stringData);
fclose($fh);
这将是输出:
Array
(
[0] => Array
(
[Qty] => 20
[Product] => Cars
)
[1] => Array
(
[Qty] => 30
[Product] => Wheels
)
)
【讨论】:
您可以使用 print_r 和 html 将其解释为带有换行符的字符串,如下所示:
$arraystring = print_r($your_array, true);
$arraystring = '<pre>'.print_r($your_array, true).'</pre>';
或者,如果你这样做,你可以混合许多数组和变量
ob_start();
print_r($var1);
print_r($arr1);
echo "blah blah";
print_r($var2);
print_r($var1);
$your_string_var = ob_get_clean();
【讨论】:
For() 循环非常有用。您可以将数组的值添加到另一个变量,如下所示:
<?php
$dizi=array('mother','father','child'); //This is array
$sayi=count($dizi);
for ($i=0; $i<$sayi; $i++) {
$dizin.=("'$dizi[$i]',"); //Now it is string...
}
echo substr($dizin,0,-1); //Write it like string :D
?>
在这段代码中,我们将 $dizi 的值和逗号添加到 $dizin:
$dizin.=("'$dizi[$i]',");
现在
$dizin = 'mother', 'father', 'child',
它是一个字符串,但它有一个额外的逗号:)
然后我们删除了最后一个逗号substr($dizin, 0, -1);
输出:
'母亲','父亲','孩子'
【讨论】:
由于只有在导出数组时才会出现空格问题,所以您可以将原始的 var_export() 用于所有其他变量类型。这个函数完成了这项工作,并且从外部看,它的工作原理与 var_export() 相同。
<?php
function var_export_min($var, $return = false) {
if (is_array($var)) {
$toImplode = array();
foreach ($var as $key => $value) {
$toImplode[] = var_export($key, true).'=>'.var_export_min($value, true);
}
$code = 'array('.implode(',', $toImplode).')';
if ($return) return $code;
else echo $code;
} else {
return var_export($var, $return);
}
}
?>
【讨论】:
像这样使用 PHP join 函数:
$my_array = array(4, 1, 8);
print_r($my_array);
Array
(
[0] => 4
[1] => 1
[2] => 8
)
$result_string = join(',', $my_array);
echo $result_string;
将数组中的项目用逗号分隔成字符串:
4,1,8
或者像这样使用 PHP implode 函数:
$my_array = array(4, 1, 8);
echo implode($my_array);
哪些打印:
418
如果您在 PHP 数组中加入或内爆键值对会发生以下情况
php> $keyvalues = array();
php> $keyvalues['foo'] = "bar";
php> $keyvalues['pyramid'] = "power";
php> print_r($keyvalues);
Array
(
[foo] => bar
[pyramid] => power
)
php> echo join(',', $keyvalues);
bar,power
php> echo implode($keyvalues);
barpower
php>
【讨论】:
使用 PHP 中的内置函数,implode(array, separator):
<?php
$ar = array("parth","raja","nikhar");
echo implode($ar,"/");
?>
结果:parth/raja/nikhar
【讨论】:
在 PHP 中将数组转换为字符串:
像这样使用 PHP join 函数:
$my_array = array(4,1,8);
print_r($my_array);
Array
(
[0] => 4
[1] => 1
[2] => 8
)
$result_string = join(',' , $my_array);
echo $result_string;
将数组中的项目用逗号分隔成字符串:
4,1,8
【讨论】:
为了完整和简单起见,以下应该没问题:
$str = var_export($array, true);
在我的情况下它做得很好,但其他人似乎对空格有问题。在这种情况下,ucefkh 的答案提供了 PHP 手册中注释的解决方法。
【讨论】: