2012-02-21 2 views
0

Я взял на себя сложную задачу хранения значений в огромном числовом массиве.Простой способ редактирования числового массива?

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

//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?

+4

Что бы вы ни делали, чего я не понимаю, вы делаете это ужасно неправильно. Чтобы решить проблему, вы можете просто сделать $ home_team [] = 'значение'; и он добавит значение в следующий доступный слот, поэтому вам не нужно вручную указывать индекс. Поэтому, если вы всегда ставите дома и в гости, они должны оставаться в синхронизации. –

+0

Итак, вы хотите, чтобы код исправил вашу опечатку? –

+0

Если вы скорректировали значения, вы ничего не можете сделать, кроме как исправить свой код. Я не понимаю, как вы думаете, что MySQL может помочь, так как вы не упоминаете его использование в любом месте вашего проекта. – meagar

ответ

3

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

$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.

3

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

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

, и это позволит вам значительно упростить управление массивом.

+0

Да, это именно то, что я пытаюсь сделать ... сопоставлять дома и команды, основанные на индексе массива. Теперь я ввел их все в БД. Но я не совсем уверен, как подойти к решению этой ошибки. – Lance

+0

У вас есть все они в базе данных? Большой! Какая ошибка? – 472084

3

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

<?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 /> "; 
} 
?> 
Смежные вопросы