如何使用php函数

时间:2017-10-25 17:16:21

标签: php arrays foreach

我使用foreach循环来浏览我的数组。我正在对特定值进行更改,但不管其余的是什么。 (在这种情况下,我会在每个带冒号的项目之前休息,除非它是第一个)

如果当前值包含特定字符串,我想在数组中删除该值及其后面的值,并从foreach循环中继续。

例如:

$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")
  }
}

这是我想要回归的内容:

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

由于不同的项目具有各种值,每次都不一定是相同的顺序,我无法通过item[2]item[3]等进行选择。< / p>

3 个答案:

答案 0 :(得分:0)

据我所知,你想摆脱字符串数组&#34;尺寸&#34;。如果是这样,那么你可以通过两种方式解决这个问题。在第一个(在你的情况下)我建议在循环中使用unset函数,如同事Lucas Vieira的例子。在第二种情况下,我建议使用函数而不是for循环,如下例所示:

if(array_key_exists('Size:',  $items))
    unset($items['Size:']);

顺便说一句。你有一个奇怪的数组结构,它内置在一个关联数组中,所以它更容易浏览它。例如:

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

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

答案 1 :(得分: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标签一样。

答案 2 :(得分:-1)

您可以执行以下操作

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