编辑数字数组的更简单方法


Easier way to edit a numeric array?

我承担了将值存储到一个巨大的数字数组中的艰巨任务。

阵列看起来像这样:

//April 5
$home_team[1] = "Giants";
$home_team[2] = "Raiders";
$away_team[1] = "Saints";
$away_team[2] = "Titans";
//April 6
$home_team[3] = "Warriors";
$away_team[3] = "Bears";

一直到数字数组包含1929个值。但是,我搞砸了,在代码中间制作了重复的数字数组。它看起来像这样:

//August 11
$home_team[1033] = "Angels";
$away_team[1033] = "Bears";
//August 12
$home_team[1033] = "Titans";
$away_team[1033] = "Bulls";

与其从8月12日起手动将数字数组中的值更改为比当前值大一的数字,我有没有办法用php和mysql做到这一点?

我不确定你到底想实现什么,但我要猜测一下,你想创建匹配(主场对客场)并将其存储在数组中吗?您是通过创建两个单独的数组并用同一索引组织它们来实现这一点的吗?如果是这样的话,这将是一个更好的解决方案:

<?php
$games = array(
  array('home' => 'Giants', 'away' => 'Saints', 'date' => '2012-02-21'),
  array('home' => 'Raiders', 'away' => 'Titans', 'date' => '2012-02-27')
);
foreach($games as $key => $game){
    echo $game['home'] . " vs ". $game['away']. " on " . $game['date'] . " <br /> ";
}
?>

只要数组键没有任何意义,你就可以完全删除它们,它会自动为你创建一个索引

$home_team[] = "Giants";
$home_team[] = "Raiders";
$away_team[] = "Saints";
$away_team[] = "Titans";

$home_team和$away_team中也需要相同数量的条目,以确保它们匹配!


就使用SQL来修复它而言,您需要以某种方式将所有团队输入数据库,从那时起,它将更易于管理。这可能是值得的,因为听起来你不介意做大量的数据输入。或者用find-and-replace之类的东西创建一个批处理SQL脚本。。。


一个建议是更好地布局数组。你可以这样做:

$games[] = array('home' => 'Giants', 'away' => 'Saints', 'date' => '2012-02-21')

它可以让你更容易地操作数组。

您根本不需要指定数字。只需:

$home_team[] = "Giants";
$home_team[] = "Raiders";
$away_team[] = "Saints";
$away_team[] = "Titans";

PHP将自动为该元素分配下一个索引。如果你希望它是基于一个,你可以做:

$i = 1;
$j = 1;
$home_team[$i++] = "Giants";
$home_team[$i++] = "Raiders";
$away_team[$j++] = "Saints";
$away_team[$j++] = "Titans";

如果你想用代码"修复"你的当前代码,你可以迭代你的当前数组:

foreach ($home_team as $team) {
    echo '$home_team[$i++] = "' . $team . "'";'n";
}

这将输出代码:

$home_team[$i++] = "Giants";
$home_team[$i++] = "Raiders";

然后您可以将其复制并粘贴到编辑器中,并填写缺失的团队(天使/熊)。

更好的阵列结构可能是:

$games = array();
$games[] = array('home'=>'Giants',  'away'=>'Saints');
$games[] = array('home'=>'Raiders', 'away'=>'Titans');

这样,您就不必担心两个离散数组之间的索引匹配问题。当然,最好的方法是将这一切放入一个名为teamsgames的表的数据库中。