我想要刪除$array
中包含$str
的所有項。 $str='foo'
。
我想要刪除的元素後面的元素「移回」。
例如: $array = array('1', '0', ' ', '1')
我想$array[3]
失去它的內容,並接收$array[4]
的內容,這將被刪除。
我想要刪除$array
中包含$str
的所有項。 $str='foo'
。
我想要刪除的元素後面的元素「移回」。
例如: $array = array('1', '0', ' ', '1')
我想$array[3]
失去它的內容,並接收$array[4]
的內容,這將被刪除。
嘗試array_filter
$array=array('a' => '123', 'b' => 34);
$str = '2';
var_dump(
array_filter(
$array, function($element) use ($str) {if(strpos($element, $str) === false) return true;}
)
);
輸出:
array(1) {
["b"]=>
int(34)
}
如果你想更換$海峽,你應該使用array_map
var_dump(array_map(
function($element) use ($str) { return str_replace($str, '', $element);}, $array)
);
輸出:
array(2) {
["a"]=>
string(2) "13"
["b"]=>
string(2) "34"
}
下一個條件的最終解決方案「我想要刪除的元素之後的元素'移回'。」
$values = array_filter($array, function($element) use ($str) {if(strpos($element, $str) === false) return true;});
$keys = array_slice(array_keys($array), 0, count($values));
var_dump (array_combine($keys, $values));
輸出:
array(1) {
["a"]=>
int(34)
}
或者,而不是測試原因,並返回true,如果是true,只要做:'返回(strpos($ element,$ str)=== false);' –
是的,這將是好的,但我想'array ['a']'成爲'int(34)'。 –
好的,檢查我的更新。 – ziollek
嘗試了這一點:
foreach($array as $v => $a) {
if($a == 'foo') {
unset($array[$v]);
}
}
(當然,這假定該字符串僅由 '富' 的)。
通過引用foreach'-ing不工作,就像你似乎認爲它沒有... [不設置一個參考不會全部取消設置](http://codepad.org/cTJzUHzF)。 – Wrikken
@Wrikken我的不好,謝謝你指出。我記得在過去(幾個月前)使用這種方法的不同之處。我已經修復了代碼。 – Crackertastic
$array = preg_grep("/{$str}/i", $array, PREG_GREP_INVERT);
你能解釋一下你爲了做這個嘗試?我的意思是,你至少已經嘗試了'foreach()'和'strpos()'對嗎? –
你的意思是你想從數組中刪除項目? – Aris
與'foreach()'和'strpos()'我不能刪除他們alond他們的'id' –