My Array看起来像这样:
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 ) ) )
我希望能够删除一个具有特定名称的团队,比如A队。
答案 0 :(得分:0)
您必须按索引向后循环数组,直到找到目标团队名称,然后使用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]);
}
}
答案 1 :(得分:0)
我,我总是喜欢使用foreach循环而不是计数和使用for循环。只是我的偏好。另外,在之前的一个答案中,建议使用array_splice,但是unset在这里工作得更好 - 除非您想要将删除的团队放入一个新的数组,这是您通常使用的array_splice。我相信,未设置会节省一些记忆。
$remove = 'Team A';
foreach ($teams['Team'] as $key => $team) {
if($team['Name'] == $remove){
unset($teams['Team'][$key]);
}
}
答案 2 :(得分:0)
“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>