2011-03-29 112 views
2

簡而言之,我需要取一個數組的第一列,並將其變爲一個命名數組,並在單個二維數組內重複多次。(PHP)2D數組的第一個元素作爲索引的「名稱」

$改編[0] [0] = 「名稱」 $改編[1] [0] = 「版本」 ...等等,讓我再訪問它們爲: $ ARR [ 「名稱」 ] [1] =「Bob」 $ arr [「Version」] [1] =「1.00」

如何爲變量名分配索引?如果這是有道理的。我不知道這種事情的適當條件......或者至少不知道如何使用它們。

無論如何,實際的數組是這樣的:

Name,Version,Compact,OpenGFx 
Element1,1.0,0,0,1 
Element2,1.23,0,0,1 
ElementN,1.0,0,0,1 

我開始寫標識符做同樣的事情($名= 0,$版= 1,等等),但也有165列 !所以自動化將變得更加容易,並且我有興趣一如既往地學習新事物!

回答

2

如果我理解正確,你不想把所有的標題寫出來嗎?也許你可以做一些類似這樣的東西代碼:

我只是假定輸入數組的格式,您可能需要改變它張望了一下:

$input = array(
    array('name', 'version', 'compact'), // and so on 
    array('element1', 1.0, 0), 
    array('element2', 1.3, 1) // and so on 
); 

$headings = array_shift($input); 

$output = array(); 
foreach ($input as $row) { 
    $newrow = array(); 
    foreach ($headings as $index => $name) { 
     $newrow[$name] = $row[$index]; 
    } 
    $output[] = $newrow; 
} 

var_dump($output); 
+0

是的,你釘了它!很好的例子,它應該很容易適合我的腳本。 – 2011-03-29 20:54:58

1

確定你做的是:

$arr = array(); 
$arr['NAME'] = array(); 
$arr['VERSION'] = array(); //and so on 

//to add to the array: 

$arr['NAME'][] = 'john'; 
//or 
$arr['NAME'][0] = 'john'; 
//etc etc 

,然後再打印所有的名字(例如),你可以這樣做:

foreach($arr['NAME'] as $name){ 
    echo $name.'<br/>'; 
} 
+0

我明白了,但是如果數組已經存在,我可以給已經定義的數組命名一個名稱嗎?這是我遇到的困境。 – 2011-03-29 20:49:10

+0

@RadGH哈哈現在我只是不知道你想做什麼 – Neal 2011-03-29 20:50:09

1

我想你想要做你的陣列是這樣的:

$arr[] = array("name" => "nameValue" 
       , "version" => 1 
       , "compact" => 0) //...etc 

那麼你可以像這樣訪問:

$currentName = $arr[0]['name']; 
$currentVersion = $arr[0]['version'] //...etc 
2

$陣列=陣列();

// add your values to the last index 
$array['Name'][] = 'Counter Strike'; 
$array['Version'][] = '1.6'; 
$array['Name'][] = 'Bob'; 
$array['Version'][] = '1.0'; 

// display results 
echo $array['Name'][0]; // Counter Strike 
echo $array['Version'][0]; // 1.6 
echo $array['Name'][1]; // Bob 
echo $array['Version'][1]; // 1.0 


// sexier way 
$element1 = array('Name' => 'Counter Strike', 'Version' => '1.6'); 
$element2 = array('Name' => 'Bob', 'Version' => '1.0'); 

// add the element 
$array[] = $element1; 
$array[] = $element2; 
// or 
array_push($array, $element1); 
array_push($array, $element2); 

// display with a loop 
foreach ($array as $element) { 
    echo $element['Name']; 
    echo $element['Version']; 
} 

// or 
echo $array[0]['Name']; // Counter Strike 
echo $array[1]['Name']; // Bob 
相關問題