Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php数组内爆_Php_Arrays_Implode - Fatal编程技术网

php数组内爆

php数组内爆,php,arrays,implode,Php,Arrays,Implode,我有这个阵列: 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';
如何以简单的方式获得它

谢谢。

你不能使用内爆来实现这一点,请参见下面@havelock的答案,但是使用循环或其他形式的迭代会更容易

$str = "";

foreach ($array as $key => $value) {

    $str .= $key . "-" . $value . "|";

}

$str = substr(0, strlen($str)-1);
使用内爆无法做到这一点,请参见下面@havelock的答案,但是使用循环或其他形式的迭代会更容易

$str = "";

foreach ($array as $key => $value) {

    $str .= $key . "-" . $value . "|";

}

$str = substr(0, strlen($str)-1);

我还没有测试过这个,但它应该是非常直接的

foreach($array as $key=>$item){
    $new_arr[] = $key."-".$item;
}

$str = implode('|', $new_arr);

我还没有测试过这个,但它应该是非常直接的

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)
                           )
      );

一种可能是这样的

function mapKeyVal($k, $v) {
    return $k . '-' . $v;
}

echo implode('|', array_map('mapKeyVal', 
                            array_keys($arry), 
                            array_values($arry)
                           )
      );
解决方案 您可以在使用自定义关联映射函数时,通过连接字符串干净地完成此操作,该函数如下所示:

函数数组\u映射\u关联($callback,$array){
$result=array();
foreach($key=>$value的数组){
$result[]=call_user_func($callback,$key,$value);
}
返回$result;
}
完整示例和测试 使用它的完整解决方案可能如下所示:

解决方案
您可以在使用自定义关联映射函数时,通过连接字符串干净地完成此操作,该函数如下所示:

函数数组\u映射\u关联($callback,$array){
$result=array();
foreach($key=>$value的数组){
$result[]=call_user_func($callback,$key,$value);
}
返回$result;
}
完整示例和测试 使用它的完整解决方案可能如下所示:


当你说
如何以简单的方式获得它时?
你的意思是没有循环正确吗?当你说
如何以简单的方式获得它时?
你的意思是没有循环正确吗?你也可以使用rtrim()删除最后一个“|”,我坚持你也可以使用
内爆()
作为解决方案的一部分。。。查看我的答案:-)如果他想查看其他选项,他可以查看页面的滚动条,我不需要在我的答案中列出它们。你也可以使用rtrim()删除最后一个“|”,我坚持认为你也可以使用
内爆()
作为解决方案的一部分。。。查看我的答案:-)如果他想查看其他选项,他可以查看页面的滚动条,我不需要在我的答案中列出它们。+1别忘了你可以实现匿名功能!是的,我认为这会让它变得“更容易理解”:-)匿名
函数($l,$r){返回“$l-$r”;}
。谢谢@Gremo,正如我上面所说的,考虑到这个问题,我想让答案不要“太复杂”:-@Havelock:这个解决方案很有效,回调可以是匿名函数,有许多主机支持早于5.3的PHP(因此没有任何同名函数)。请参阅我的答案,了解更一般的选择。+1不要忘记,您可以实现匿名函数!是的,我认为这会让它变得“更容易理解”:-)匿名
函数($l,$r){返回“$l-$r”;}
。谢谢@Gremo,正如我上面所说的,考虑到这个问题,我想让答案不要“太复杂”:-@Havelock:这个解决方案很有效,回调可以是匿名函数,有许多主机支持早于5.3的PHP(因此没有任何同名函数)。请参阅我的答案,了解更一般的选择。