首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php数组内爆

php数组内爆
EN

Stack Overflow用户
提问于 2012-11-11 22:22:23
回答 3查看 2.5K关注 0票数 1

我有这个数组:

代码语言:javascript
复制
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来获取:

代码语言:javascript
复制
$str = '35-3|24-6|72-1|16-5|81-2';

如何以简单的方式获得它?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-11 22:26:29

我还没有测试过,但它应该是相当直接的……

代码语言:javascript
复制
foreach($array as $key=>$item){
    $new_arr[] = $key."-".$item;
}

$str = implode('|', $new_arr);
票数 4
EN

Stack Overflow用户

发布于 2012-11-11 22:28:25

一种可能性是这样的:

代码语言:javascript
复制
function mapKeyVal($k, $v) {
    return $k . '-' . $v;
}

echo implode('|', array_map('mapKeyVal', 
                            array_keys($arry), 
                            array_values($arry)
                           )
      );
票数 5
EN

Stack Overflow用户

发布于 2012-11-11 22:41:07

解决方案

你可以通过连接字符串来干净利落地做这件事,同时使用。自定义关联映射函数,如下所示:

代码语言:javascript
复制
function array_map_associative($callback, $array){
    $result = array();
    foreach ($array as $key => $value){
        $result[] = call_user_func($callback, $key, $value);
    }
    return $result;
}

完整的示例和测试

使用它的完整解决方案可能如下所示:

代码语言:javascript
复制
<?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);

结果是:

代码语言:javascript
复制
string(24) "35-3|24-6|72-1|16-5|81-2"

符合你的预期。

证据就在这里:http://ideone.com/HPsVO6

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13331970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档