У меня есть массив в 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)
}
Вы можете использовать array_walk
для применения substr
и strpos
к каждому элементу:
$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"
}
Это изменит исходный массив.
Для каждого элемента массива мы ищем позицию "#####" в строке и принимаем только часть от 0 до позиции в строке, где "#####" встречается.
Вы можете использовать substr
и strpos
для добавления новой записи, а затем 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)
}
Это сделает это, перейдя через массив, взрывающий ключ, с помощью ##### и добавив его в новый массив. Я сделал это в цикле, если ваш массив больше 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);