1

私はこの配列を持っています:

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

簡単に手に入れる方法は?

ありがとう。

4

4 に答える 4

5

1つの可能性は次のようになります

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

echo implode('|', array_map('mapKeyVal', 
                            array_keys($arry), 
                            array_values($arry)
                           )
      );
于 2012-11-11T14:28:25.060 に答える
4

implode を使用してこれを行うことはできません。以下の @havelock の回答を参照してください。ただし、ループまたは別の形式の反復を使用する方が簡単です。

$str = "";

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

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

}

$str = substr(0, strlen($str)-1);
于 2012-11-11T14:25:39.293 に答える
4

私はこれをテストしていませんが、かなり簡単なはずです...

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

$str = implode('|', $new_arr);
于 2012-11-11T14:26:29.257 に答える
2

解決

たとえば、使用中に文字列を結合することで、きれいに行うことができます。次のようなカスタム連想マッピング関数。

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

于 2012-11-11T14:41:07.297 に答える