Более простой способ редактировать числовой массив? - PullRequest
0 голосов
/ 21 февраля 2012

Я взял на себя сложную задачу сохранения значений в огромный числовой массив.

Массив выглядит примерно так:

//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";

Вместо того, чтобы вернуться назад и вручную изменить значения в числовом массиве с 12 августа и вперед на число, которое на одно больше, чем то, что в данный момент, есть литак, что я мог бы сделать это с php и mysql?

Ответы [ 3 ]

3 голосов
/ 21 февраля 2012

Пока ключи массива ничего не значат, вы можете удалить их полностью, и это автоматически создаст для вас индекс

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

$away_team[] = "Saints";
$away_team[] = "Titans";

В $ home_team также должно быть одинаковое количество записей и$ away_team, чтобы убедиться, что они совпадают!


Что касается использования SQL для его исправления, вам нужно будет как-то ввести все ваши команды в базу данных, и с этого момента это будет намного проще в управлении.Вероятно, оно того стоит, так как кажется, что вы не против делать много ввода данных.Или создайте пакетный сценарий SQL с функцией поиска и замены или что-то в этом роде ...


Рекомендуется лучше расположить массивы.Вы можете сделать это:

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

, и это позволит вам гораздо проще управлять массивом.

3 голосов
/ 21 февраля 2012

Я не уверен, что именно вы пытаетесь достичь, но я собираюсь сделать предположение и сказать, что вы пытаетесь создать совпадения (дома против) и сохранить их в массиве? И вы делаете это, создавая два отдельных массива и упорядочивая их по одному индексу? Если это так, то это было бы лучшим решением:

<?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 /> ";
}
?>
3 голосов
/ 21 февраля 2012

Вам не нужно указывать цифры вообще. Просто сделай:

$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');

Таким образом, вам не нужно беспокоиться о сопоставлении индексов между двумя дискретными массивами. Конечно, лучший , что нужно сделать, это бросить все это в базу данных с таблицами под названием teams, games.

...