Как добавить новый индекс в многомерный массив в цикле foreach? - PullRequest
0 голосов
/ 17 декабря 2010

Черт, еще раз, мне интересно, как вы добавляете данные в новый индекс массива внутри цикла foreach?

код у меня есть,

// Connect to the database to gather all data pertaiing to the link in question
$assoResult = mysql_query("SELECT * FROM associate_users");
while ($assoRow = mysql_fetch_field($assoResult)) {
    $resultArray[] = $assoRow->name;
}

// Connect to the database to gather all data pertaiing to the link in question
$assoResult2 = mysql_query("SELECT * FROM associate_users WHERE id='$getID'");
while ($assoRow2 = mysql_fetch_object($assoResult2)) {

    foreach ($resultArray as $row) { 
        $array = array(array( 1 => $assoRow2->$row, 2 => $row, ),);
        echo "<br />"; print_r($array);
    }               
}

Ниже приведены выходные данные из "echo" br /> "; print_r ($ array);" линия.

=============================================== ==================

Array ( [0] => Array ( [1] => 1 [2] => id ) )
Array ( [0] => Array ( [1] => Bob[2] => contactName ) )
Array ( [0] => Array ( [1] => Bob's Tyres [2] => company ) )
Array ( [0] => Array ( [1] => XXXXXXXXXXXXXX [2] => address1 ) )
Array ( [0] => Array ( [1] => XXXXXXXXXXXXXX [2] => address2 ) )
Array ( [0] => Array ( [1] => XXXXXXXXX [2] => address3 ) )
Array ( [0] => Array ( [1] => XXXXXX [2] => postcode ) )

Как вы видите, массив создается снова и снова, мне нужно, чтобы вышеуказанные данные увеличивали индексный ключ 1-го измерения в каждом цикле, чтобы он выглядел как ...

=============================================== ==================

Array ( [0] => Array ( [1] => 1 [2] => id ) )
Array ( [1] => Array ( [1] => Bob[2] => contactName ) )
Array ( [2] => Array ( [1] => Bob's Tyres [2] => company ) )
Array ( [3] => Array ( [1] => XXXXXXXXXXXXXX [2] => address1 ) )
Array ( [4] => Array ( [1] => XXXXXXXXXXXXXX [2] => address2 ) )
Array ( [5] => Array ( [1] => XXXXXXXXX [2] => address3 ) )
Array ( [6] => Array ( [1] => XXXXXX [2] => postcode ) )

Заранее спасибо. У меня нет выбора в том, чтобы заставить это работать и в отчаянии.

Dan.

Ответы [ 3 ]

2 голосов
/ 17 декабря 2010

Измените значения, присваивая часть вашего кода на

    $count=0; 
    foreach ($resultArray as $row) { 
            $array[$count][1] = $assoRow2->$row
            $array[$count][2]=$row;
            $count++;
            echo "<br />"; print_r($array);
        }   
1 голос
/ 17 декабря 2010

Этот код возвращает запрашиваемый вывод без неэффективного использования двух запросов:

// Connect to the database to gather all data pertaining to the link in question
$result = mysql_query("SELECT * FROM associate_users WHERE id=" . (int)$getID);

$resultArray = array();
$resultCount = 0;
$row = mysql_fetch_assoc($result);

$count = 0;
foreach ($row as $key => $value) {
    $temp = array();
    $temp[$count] = array(1 => $value, 2 => $key);
    $count++;

    echo "<br />"; print_r($temp);
}

Почему ты так хочешь, я понятия не имею.

0 голосов
/ 17 декабря 2010
    //extra code.declaring array
$array = array();
while ($assoRow2 = mysql_fetch_object($assoResult2)) {
    foreach ($resultArray as $row) { 
// 1st parameter is the array name, here array name is array .give gd name according to use
       array_push($array,array( 1 => $assoRow2->$row, 2 => $row, ));
        echo "<br />"; print_r($array);
    }               
}
...