我想将数组值转换为字符串。我应该如何在目标中加入他们?
我应该使用serialize()
或implode()
或http_build_query()
还是array_walk()
?
$attributes = array(
'autocomplete' => 'off',
'class' => 'email',
'id' => 'myform'
);
echo http_build_query($attributes, '', '" ');
// output
autocomplete=off" class=email" id=myform
目标:
// output
autocomplete="off" class="email" id="myform"
修改
我使用array_walk()
来获得目标
function myfunction($value, $key) {
echo $key . '=" ' . $value . ' " ';
}
array_walk($atributes, "myfunction");
答案 0 :(得分:2)
如果你想确保你将获得完全相同的数组,你必须使用serialize
(因为它将保留变量类型)和unserialize
来获取数据。或者,json_decode
和json_encode
也可以工作(但只维护简单类型为int / float / string / boolean / NULL)。但是,数据将大于implode
和http_build_query
。
示例:
考虑以下数组:
$array = array(
'foo' => 'bar',
'bar' => false,
'rab' => null,
'oof' => 123.45
);
<?php
var_dump( unserialize( serialize($array) ) );
/*
array(4) {
["foo"] => string(3) "bar"
["bar"] => bool(false)
["rab"] => NULL
["oof"] => float(123.45)
}
*/
?>
<?php
var_dump( explode('&', implode('&', $array) ) );
/*
array(4) {
[0] => string(3) "bar"
[1] => string(0) ""
[2] => string(0) ""
[3] => string(6) "123.45"
}
*/
?>
<?php
var_dump( json_decode( json_encode($array) , true) );
/*
array(4) {
["foo"] => string(3) "bar"
["bar"] => bool(false)
["rab"] => NULL
["oof"] => float(123.45)
}
*/
?>
<?php
parse_str( http_build_query($array) , $params);
var_dump( $params );
/*
array(3) {
["foo"] => string(3) "bar"
["bar"] => string(1) "0"
["oof"] => string(6) "123.45"
}
*/
?>
答案 1 :(得分:1)
http_build_query
是最佳选择,因为您有key=>value
个组合
答案 2 :(得分:0)
看起来您希望将这些组合成一个字符串,以便在HTML标记上输出。
这个可重用的函数应该产生你想要的结果:
function get_attribute_string($attr_array) {
$attributes_processed = array();
foreach($attr_array as $key => $value) {
$attributes_processed[] = $key . '="' . $value . '"';
}
return implode($attributes_processed, ' ');
}
$atributes = array(
'autocomplete' => 'off',
'class' => 'email',
'id' => 'myform'
);
// this string will contain your goal output
$attributes_string = get_attribute_string($atributes);
P.S。 atributes
应该有三个Ts - attributes
- 介意这不会让你失望!
答案 3 :(得分:0)
使用array_walk()
获得目标
function myfunction($value, $key) {
echo $key . '="' . $value . '" ';
}
array_walk($atributes, "myfunction");