我的数组如下所示:
Array (
[Team] => Array (
[0] => Array (
[Name] => Team A [Played] => 0 [Wins] => 0 [Draws] => 0 [Losses] => 0 [Gd] => 0 [Points] => 0 )
[1] => Array (
[Name] => Team B [Played] => 0 [Wins] => 0 [Draws] => 0 [Losses] => 0 [Gd] => 0 [Points] => 0 ) ) )
我希望能够删除具有特定名称的团队,例如team a.
我自己总是喜欢使用foreach循环,而不是计数和使用for循环。只是我的喜好。此外,在之前的一个答案中,建议使用array_splice,但unset在这里效果更好——除非您想将删除的团队放入新的阵列中,而这正是您通常使用array_splice的目的。我相信,Unset可以保存一些记忆。
$remove = 'Team A';
foreach ($teams['Team'] as $key => $team) {
if($team['Name'] == $remove){
unset($teams['Team'][$key]);
}
}
您必须通过索引反向循环数组,直到找到目标团队名称,然后使用array_splice
删除父级:
$lastIndex = count($arr['Team'])-1;
for($i=$lastIndex; $i>=0; $i--) {
if($arr['Team'][$i]['Name'] == 'Team A') {
array_splice($arr['Team'], $i, 1);
}
}
您也可以使用unset
:
$lastIndex = count($arr['Team'])-1;
for($i=$lastIndex; $i>=0; $i--) {
if($arr['Team'][$i]['Name'] == 'Team A') {
unset($arr['Team'][$i]);
}
}
"XML,基本上我想更新团队值,但发现将新数组推到末尾更容易,只想删除旧数组"-它可以像一样简单
<?php
$foo = new SimpleXMLElement(getData());
foreach( $foo->xpath('teams/team[@name="Team A"]') as $t) {
$t->wins += 1;
}
echo $foo->asxml();
function getData() {
return <<< eox
<foo>
<teams>
<team name="Team A">
<played>0</played>
<wins>0</wins>
<draws>0</draws>
<looses>0</looses>
</team>
<team name="Team B">
<played>0</played>
<wins>0</wins>
<draws>0</draws>
<looses>0</looses>
</team>
</teams>
</foo>
eox;
}
打印
<?xml version="1.0"?>
<foo>
<teams>
<team name="Team A">
<played>0</played>
<wins>1</wins>
<draws>0</draws>
<looses>0</looses>
</team>
<team name="Team B">
<played>0</played>
<wins>0</wins>
<draws>0</draws>
<looses>0</looses>
</team>
</teams>
</foo>