1

PHP で、キー名から |xyz の部分を切り取ることはできますか? 配列は次のようになります。

    array(30) {
  ["1970-01-01|802"]=>
  array(4) {
    ["id"]=>
    string(3) "176"
    ["datum"]=>
    string(10) "1970-01-01"
    ["title"]=>
    string(8) "Vorschau"
    ["alias"]=>
    string(16) "vorschau-v15-176"
  }
  ["1970-01-01|842"]=>
  array(4) {
    ["id"]=>
    string(3) "176"
    ["datum"]=>
    string(10) "1970-01-01"
    ["title"]=>
    string(8) "Vorschau"
    ["alias"]=>
    string(16) "vorschau-v15-176"
  } ...

ご協力ありがとうございました、

トニ

4

4 に答える 4

1

たとえば、次のように使用できます。

$newArray = array();
foreach( $oldArray as $key => $value ) {

   $newArray[ substr( $key, 0, 10 ) ] = $value;

}

または、配列をその場で変更します。

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

   unset( $someArray[ $key ] );
   $someArray[ substr( $key, 0, 10 ) ] = $value;

}

どちらのソリューションも価値を失う

ソース配列のキーは

   1970-01-01|802
   1970-01-01|842

出力配列はいくつかの配列値を失います: 両方のキーが単一の宛先キーにマップされます:

   1970-01-01

すべての値を保持する

値を失いたくない場合は、これを試してください:

$newArray = array();
foreach( $someArray as $key => $value ) {

   $newKey = substr( $key, 0, 10 );
   if ( ! isset( $newArray[ $newKey ] )) {
      $newArray[ $newKey ] = array();
   }
   $newArray[ $newKey ][] = $value;

}

このソリューションの結果配列構造:

array( 
  '1970-01-01' => 
    array(
       0 => ...,
       1 => ...
    ),
  '1970-01-02' => 
    array(
       0 => ...,
       1 => ...,
       2 => ...
    ),
  ...
);
于 2013-08-12T20:35:16.607 に答える
0

一種の..トリムされたキーで新しい配列を作成し、古い配列を新しい配列に等しく設定するだけです。

$newArray = array();
foreach ($arrayList as $key => $data) {

    $keyParts = explode("|", $key);
    $newArray[$keyParts[0]] = $data;

}

$arrayList = $newArray;
于 2013-08-12T20:34:02.370 に答える
0

可能かもしれませんが、この場合、同じ配列キーが 2 つになることになります。

["1970-01-01"] and ["1970-01-01"]

この場合、その背後にある xyz が必要です。

于 2013-08-12T20:36:41.737 に答える