2017-10-25 12 views
0

私の配列を渡すためにforeachループを使用しています。私は特定の値を変更していますが、残りは残しています。 (この場合は、最初のものでない限り、コロンで区切られたすべての項目の前に改行を入れています)配列内の項目とPHP関数を使用した後の項目を見つける方法

現在の値に特定の文字列が含まれている場合は、その値とその直後の値その配列をforeachループで続けます。例えば

$items = array('Color:', 'blue', 'Weight:', '5 lbs'); 

異なるアイテムが必ずしも同じ順序ではありません、種々の値を、持っているので:

$items = array('Color:', 'blue', 'Size:', '12" x 12"', 'Weight:', '5 lbs'); 
$first = true; 

foreach ($items as $item) { 

    if ((strpos($item, ':')) && $first) { 
    $item = '<b>' . $item . '</b>'; 
    $first = false; 
    } elseif (strpos($item, ':')) { 
    $item = '<br>' . '<b>' . $item . '</b>'; 
    } 

    if (strpos($item, 'Size:')) { 
    // Remove this item (Size) and the one directly after it (12" x 12") 
    } 
} 

これは私が返すしたいものです毎回item[2]item[3]などでは選択できません。

+0

['in_array()'](http://php.net/manual/en/function.in-array.php) –

+0

アレイを解析できませんでしたか?同様に:[https://eval.in/886921](https://eval.in/886921)。その後、 'unset'で削除してください。 – FirstOne

+0

答えを得るためにこの質問を参照してください:https://stackoverflow.com/questions/3059392/how-to-find-a-value-in-array-and-remove-it-by-using-php-array-functions –

答えて

0

あなたはその配列を解析する場合は、(そのようなアイテムを削除するには、以下のコードを使用するなど)、より良い、それを処理することができます

unset($arr['Size']); 

はそれを行うことができるようにするに、同様にそれを解析そう:今

$items = array('Color:', 'blue', 'Size:', '12" x 12"', 'Weight:', '5 lbs'); 
$key = null; 
$arr = array(); 
foreach($items as $i){ 
    if(empty($key)){ 
    $key = $i; 
    }else{ 
    $arr[rtrim($key, ':')] = $i; 
    $key = null; 
    } 
} 

$arrは次のようになります。

Array 
(
    [Color] => blue 
    [Size] => 12" x 12" 
    [Weight] => 5 lbs 
) 

exampleを参照してください。


おそらく、アイテムからコロンを削除したことに気づいたでしょう。私は、HTMLタグを連結するのと同じように、データをそのまま扱い、必要に応じて連結することを好みます。

-1

foreach ($items as $key => $item) { 
    if (strpos($item, 'Size:') !== false) { 
     unset($items[$key]); 
     unset($items[$key + 1]); 
    } 
} 
0

私の知る限り、文字列配列 "サイズ"を取り除きたいと思っています。そうであれば、この問題を2つの方法で解決できます。最初の(あなたの場合)では、同僚のLucas Vieiraの例のようにループの未設定関数を使用することをお勧めします。 2番目のケースでは、以下の例のようにforループの代わりに関数を使用することをお勧めします。

btwあなたは奇妙な配列構造を持っています、それは連想配列に組み込まれているので、それをナビゲートする方が簡単です。たとえば:

$items = array('Color:' => 'blue', 'Size:' => '12 x 12', 'Weight:' => '5 lbs'); 

foreach ($items as $key => $item) 
    if (strpos($key, 'Size:') !== false) 
     unset($items[$key]); 
+0

私の答えが問題を解決するのに役立ったら、ポイントを返済してください –

関連する問題