【发布时间】:2018-04-06 21:30:58
【问题描述】:
我正在使用 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有多种取值,不一定每次都是同一个顺序,所以我无法通过item[2]和item[3]等选择。
【问题讨论】:
-
你不能只解析数组吗?像这样:https://eval.in/886921。然后,使用
unset删除。 -
@FirstOne 您可能在正确的轨道上,但我并没有尝试删除冒号,只是键“Size:”和紧随其后的值。对不起,如果我误解了什么。我是菜鸟:)
-
@Chopin23 我删除了冒号,所以它变成了一个更通用的数组。我更喜欢稍后添加冒号。此外,以这种方式解析更容易使用,更容易查找或删除键和值。