如何使用 php 函数在数组中查找项目及其后的项目
Posted
技术标签:
【中文标题】如何使用 php 函数在数组中查找项目及其后的项目【英文标题】:How to find an item in an array and the one after it using php functions 【发布时间】: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]
等选择。
【问题讨论】:
利用in_array()
你不能只解析数组吗?像这样:https://eval.in/886921。然后,使用unset
删除。
参考本题答案:***.com/questions/3059392/…
@FirstOne 您可能在正确的轨道上,但我并没有尝试删除冒号,只是键“Size:”和紧随其后的值。对不起,如果我误解了什么。我是菜鸟:)
@Chopin23 我删除了冒号,所以它变成了一个更通用的数组。我更喜欢稍后添加冒号。此外,以这种方式解析更容易使用,更容易查找或删除键和值。
【参考方案1】:
如果你解析那个数组,你可以更好地处理它(例如使用下面的代码来删除一个项目)
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】:据我了解,您希望摆脱字符串数组“Size”。如果是这样,那么您可以通过两种方式解决此问题。在第一个(在你的情况下)我建议在循环中使用 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]);
【讨论】:
如果我的回答帮助解决了问题,请加分【参考方案3】:您可以执行以下操作
foreach ($items as $key => $item)
if (strpos($item, 'Size:') !== false)
unset($items[$key]);
unset($items[$key + 1]);
【讨论】:
以上是关于如何使用 php 函数在数组中查找项目及其后的项目的主要内容,如果未能解决你的问题,请参考以下文章