如何使用php函数查找数组中的项及其后的项
我使用foreach循环遍历我的数组。我正在对特定值进行更改,但不考虑其他值。(在本例中,我在每一项前都用冒号做了一个休息,除非它是第一项) 如果当前值包含一个特定的字符串,我想在数组中删除该值和紧跟其后的值,然后在foreach循环中继续 例如:如何使用php函数查找数组中的项及其后的项,php,arrays,foreach,Php,Arrays,Foreach,我使用foreach循环遍历我的数组。我正在对特定值进行更改,但不考虑其他值。(在本例中,我在每一项前都用冒号做了一个休息,除非它是第一项) 如果当前值包含一个特定的字符串,我想在数组中删除该值和紧跟其后的值,然后在foreach循环中继续 例如: $items = array( 'Color:', 'blue', 'Size:', '12" x 12"', 'Weight:', '5 lbs' ); $first = true; foreach ($items as $item) {
$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', 'Size:' => '12 x 12', 'Weight:' => '5 lbs' );
foreach ($items as $key => $item)
if (strpos($key, 'Size:') !== false)
unset($items[$key]);
由于不同的项目有不同的值,不一定每次都按相同的顺序排列,因此我无法通过
项目[2]
和项目[3]
等进行选择。您可以执行以下操作
foreach($items作为$key=>$item){
if(strpos($item,'Size:')!==false){
未设置($items[$key]);
未设置($items[$key+1]);
}
}
据我所知,您希望去掉字符串数组“Size”。如果是这样,那么可以用两种方法解决这个问题。在第一个例子中(在你的例子中),我建议在循环中使用unset函数,就像同事卢卡斯·维埃拉的例子一样。在第二种情况下,我建议使用函数而不是for循环,如下例所示:
if(array_key_exists('Size:', $items))
unset($items['Size:']);
顺便说一句,你有一个奇怪的数组结构,它内置在一个关联数组中,因此更容易在其中导航。例如:
$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', 'Size:' => '12 x 12', 'Weight:' => '5 lbs' );
foreach ($items as $key => $item)
if (strpos($key, 'Size:') !== false)
unset($items[$key]);
如果解析该数组,则可以更好地处理它(例如使用下面的代码删除项) 要做到这一点,请按如下方式进行分析:
$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
)
看一看
你可能注意到我把冒号从项目中去掉了。我更喜欢按原样处理数据,并在需要时进行连接,就像连接html标记一样。利用数据。难道你就不能解析数组吗?像这样:。然后,用
unset
删除。请参考此问题以获得答案:@FirstOne您可能走对了,但我不是要删除冒号,只是删除键“Size:”和它后面的值。对不起,如果我误解了什么。我是noob:)@Chopin23我去掉了冒号,所以它变成了一个更通用的瞳孔阵列。我更喜欢稍后添加冒号。此外,通过这种方式,您可以更轻松地使用和查找或删除键和值。如果我的回答有助于解决问题,请偿还积分