2

基本的に、いくつかの文字列を値として持つ配列があります(連想配列ではありません)。各文字列の特定の部分を取得し、それを 2 つの値を持つ配列に変換する必要があります。

これが私の配列の構造です:

$data = array(
"A1 -- B1",
"A2 -- B2",
"A3 -- B3",
"A1 -- A2",
"A2 -- A3",
"B2 -- B3",
"B1 -- B3",
);

したがって、これらの各値を次のように配列にする必要があります。

$data = array(
    array("A1", "B1");
    array("A2", "B2");
    ...
);

preg_split各文字列を分解するために使用することを考えていましたが、配列内で機能させることができませんでした。それpreg_splitを行うための最良の方法がわからないので、提案を受け付けています。

ありがとう

4

6 に答える 6

4

試す:

foreach($data as $k => $c){
    $data[$k] = explode(" -- ", $c);
}
于 2013-03-07T11:02:42.067 に答える
1

これを試して :

$data = array(
"A1 -- B1",
"A2 -- B2",
"A3 -- B3",
"A1 -- A2",
"A2 -- A3",
"B2 -- B3",
"B1 -- B3",
);

$res             = array();
foreach($data as $key=>$val){
   $res[$key]    = explode(" -- ",$val);
}

echo "<pre>";
print_r($res);

出力:

Array
(
    [0] => Array
        (
            [0] => A1
            [1] => B1
        )

    [1] => Array
        (
            [0] => A2
            [1] => B2
        )

    [2] => Array
        (
            [0] => A3
            [1] => B3
        )

    [3] => Array
        (
            [0] => A1
            [1] => A2
        )

    [4] => Array
        (
            [0] => A2
            [1] => A3
        )

    [5] => Array
        (
            [0] => B2
            [1] => B3
        )

    [6] => Array
        (
            [0] => B1
            [1] => B3
        )

)
于 2013-03-07T11:03:26.710 に答える
0
$data = array(
"A1 -- B1",
"A2 -- B2",
"A3 -- B3",
"A1 -- A2",
"A2 -- A3",
"B2 -- B3",
"B1 -- B3",
);

$new = array();
foreach($data as $d){
$new[] = split(" -- ", $d);
}

var_dump($new);

与えます:

array
  0 => 
    array
      0 => string 'A1' (length=2)
      1 => string 'B1' (length=2)
  1 => 
    array
      0 => string 'A2' (length=2)
      1 => string 'B2' (length=2)
 ... etc
于 2013-03-07T11:03:32.800 に答える
0

これを試して:

$newArray = array();
foreach($data as $key=>$value)
{
    $expArray = explode(' -- ', $value);
    $newArray[] = array($expArray[0], $expArray[1]);
}

$newArray

最終的な配列です。

これが役立つことを願っています。

于 2013-03-07T11:05:06.540 に答える
0
Try:
$result_array=array();

foreach($data as $val){
    $ex = explode(" -- ", $val);
    array_push($result_array,$ex);
}

print_r($result_array);
于 2013-03-07T11:11:07.557 に答える
-1

とにかく準備ができているので、答えに参加します。

また、カスタムの foreach ループを作成して、配列内の各項目を反復処理し、その項目 (文字列の場合) を配列に分割しました。

再帰を許可するために私が書いた関数を拡張することもできます。たとえば、配列内のすべてのアイテムが文字列ではなく、一部のアイテムが文字列を含む配列でもある場合explodeは、再帰が必要です。

しかし、私はこの例ではそれを省略しました:

http://codepad.viper-7.com/xYjXur


<?php

function splitStringInArrayToArray ( $delimiter = ' -- ', array $array )
{
    foreach ( $array as &$item )
    {
        if ( is_array ( $item ) )
            throw new Exception("oh noes, problem");

        $item = explode ( $delimiter, $item );
    }

    return $array;
}

$data = array(
"A1 -- B1",
"A2 -- B2",
"A3 -- B3",
"A1 -- A2",
"A2 -- A3",
"B2 -- B3",
"B1 -- B3"
);

$new = splitStringInArrayToArray ( ' -- ', $data );

echo '<pre>';
print_r($new);
echo '</pre>';
于 2013-03-07T11:08:54.513 に答える