我有这样的数组:
array (size=5)
35 => string '3' (length=1)
24 => string '6' (length=1)
72 => string '1' (length=1)
16 => string '5' (length=1)
81 => string '2' (length=1)
我想爆ID来获得:
$str = '35-3|24-6|72-1|16-5|81-2';
如何获得它的简单的方法?
谢谢。
我有这样的数组:
array (size=5)
35 => string '3' (length=1)
24 => string '6' (length=1)
72 => string '1' (length=1)
16 => string '5' (length=1)
81 => string '2' (length=1)
我想爆ID来获得:
$str = '35-3|24-6|72-1|16-5|81-2';
如何获得它的简单的方法?
谢谢。
我没有测试过这一点,但它应该是相当简单的...
foreach($array as $key=>$item){
$new_arr[] = $key."-".$item;
}
$str = implode('|', $new_arr);
一种可能性是这样的
function mapKeyVal($k, $v) {
return $k . '-' . $v;
}
echo implode('|', array_map('mapKeyVal',
array_keys($arry),
array_values($arry)
)
);
你可以不能够做到这一点使用破灭,见下文@哈夫洛克的答案,但它会更容易地使用循环或迭代的另一种形式。
$str = "";
foreach ($array as $key => $value) {
$str .= $key . "-" . $value . "|";
}
$str = substr(0, strlen($str)-1);
您可以通过连接字符串,做到干净,同时使用如。 自联想映射功能,它看起来像这样:
function array_map_associative($callback, $array){
$result = array();
foreach ($array as $key => $value){
$result[] = call_user_func($callback, $key, $value);
}
return $result;
}
使用它可以像她那样的完整的解决方案:
<?php
function array_map_associative($callback, $array){
$result = array();
foreach ($array as $key => $value){
$result[] = call_user_func($callback, $key, $value);
}
return $result;
}
function callback($key, $value){
return $key . '-' . $value;
}
$data = array(
35 => '3',
24 => '6',
72 => '1',
16 => '5',
81 => '2',
);
$result = implode('|', array_map_associative('callback', $data));
var_dump($result);
其结果是:
string(24) "35-3|24-6|72-1|16-5|81-2"
它匹配你所期望的。
证据是在这里: http://ideone.com/HPsVO6