3

この文字列を分解するにはどうすればよいですか?この'||25||34||73||94||116||128' ような配列が必要です

array (
 0 => '25',
 1 => '34',
 2 => '73',
 3 => '94',
 4 => '116',
 5 => '128'
)

explode( "||"、$ array); 私のために動作しませんでした私はこの配列を取得します

array (
 0 => '',
 1 => '25',
 2 => '34',
 3 => '73',
 4 => '94',
 5 => '116',
 6 => '128',
) 
4

6 に答える 6

12
$array = explode('||', trim($string, '|'));
于 2010-03-19T11:33:38.310 に答える
5

解決策は、特に文字列の途中に空の値を含めることができる場合は、preg_splitとそのPREG_SPLIT_NO_EMPTYフラグを使用することです。

$str = '||25||34||73||94||116||128';
$array = preg_split('/\|\|/', $str, -1, PREG_SPLIT_NO_EMPTY);
var_dump($array);

あなたに与えるでしょう:

array
  0 => string '25' (length=2)
  1 => string '34' (length=2)
  2 => string '73' (length=2)
  3 => string '94' (length=2)
  4 => string '116' (length=3)
  5 => string '128' (length=3)


ただし、文字列の途中に空の値 がない場合は、呼び出す前に文字列の最初と最後にあるexplodeを削除する必要がある場合でも、使用する方が高速です。||

于 2010-03-19T11:37:02.367 に答える
2
$str='||25||34||73||94||116||128';
$s = array_filter(explode("||",$str),is_numeric);
print_r($s);

出力

$ php test.php
Array
(
    [1] => 25
    [2] => 34
    [3] => 73
    [4] => 94
    [5] => 116
    [6] => 128
)
于 2010-03-19T11:40:29.883 に答える
1

以前の質問の1つは、MySQLにそのような文字列を格納および更新する方法でしたので、しばらくの間、特定の値がこの配列/文字列にあるかどうかを確認するか、検索/カウントすることが将来のタスクの1つであると想定しましょう。この配列に特定の値を持つすべてのレコード。
その場合は、今すぐテーブルの正規化を開始することをお勧めします

于 2010-03-19T12:05:39.027 に答える
0

できるよ:

explode('||',substr($str,2));
于 2010-03-19T11:36:20.253 に答える
0

すでに述べた解決策に加えて、後で空の値を除外することもできます。

$arr = array_filter(explode("||", $str), function($val) { return trim($val) === ""; });

この例では、 PHP 5.3以降を使用していない場合、次のいずれかを使用して置き換える必要がある無名関数create_functionを使用しています。

$arr = array_filter(explode("||", $str), create_function('$val', 'return trim($val) === "";'));

または、事前定義された関数を使用します。

function isEmptyString($str) {
    return trim($str) === "";
}
$arr = array_filter(explode("||", $str), "isEmptyString");
于 2010-03-19T11:44:20.633 に答える