如何从某个值中删除数组中的元素?

时间:2015-11-12 14:41:48

标签: php

我在PHP中有一个数组,我不知道如何从某个字符中删除每个数组元素中的所有元素,包括该字符。有没有办法做到这一点?

array(1092) {
  ["Piper;Rosii;Sare;Test;Vinete#####Piper ->Negru;Rosii ->Călite;Sare ->De masă, grunjoasă;Vinete ->Prăjite"]=>
  int(124)
}

在我的示例中,我想删除“#####”中的所有文本,包括“#####”到最后,foreach数组元素。这可能吗?或者是否有PHP函数?

更新

我的结果应如下所示:

array(1092) {
  ["Piper;Rosii;Sare;Test;Vinete]=>
  int(124)
}

3 个答案:

答案 0 :(得分:1)

这将通过循环遍历#####爆炸键的数组并将其添加到新数组来实现。如果您的数组大于1

,我会在循环中完成
<?php
$oldArray = array("Piper;Rosii;Sare;Test;Vinete#####Piper ->Negru;Rosii ->Călite;Sare ->De masă, grunjoasă;Vinete ->Prăjite" => 124);
$newArray = array();

foreach ($oldArray as $key => $row) {
    $newKey = explode('#####', $key);
    $newArray[$newKey[0]] = $row;
}
var_dump($newArray);

答案 1 :(得分:1)

您可以使用substrstrpos添加新条目,然后unset数组中的旧条目,如下例所示:

$array = array(
    "Piper;Rosii;Sare;Test;Vinete#####Piper ->Negru;Rosii ->Călite;Sare ->De masă, grunjoasă;Vinete ->Prăjite" => 124
);

foreach ($array as $key => $value) {
    $array[substr($key, 0, strpos($key, '#####'))] = $value;
    unset($array[$key]);
}

var_dump($array);

将导致:

array(1) {
  ["Piper;Rosii;Sare;Test;Vinete"]=>
  int(124)
}

答案 2 :(得分:1)

您可以使用array_walksubstrstrpos应用于每个元素:

$array = [
    '23845637;54634;345;3453345;#####morestuff',
    '234234#####34596078345j34534534',
    '34343245dfg#####asdfsadf;23452345;sdfsdf;345345'
];

array_walk($array, function(&$value, $key) {
    $value = substr($value, 0, strpos($value, '#####'));
});

var_dump($array);

将导致:

array(3) {
    [0]=>
    string(27) "23845637;54634;345;3453345;"
    [1]=>
    string(6) "234234"
    [2]=>
    string(11) "34343245dfg"
}

这将修改原始数组。

对于数组中的每个元素,我们搜索&#39; #####&#39;的位置。在字符串中,只取零件从0到字符串中的位置&#39; #####&#39;发生。