2014-07-18 19 views
5

Tôi rất ngại khi hỏi điều này và có nhiều khả năng là trùng lặp, nhưng kết quả google của tôi sắp xuất hiện (tôi đang tìm kiếm không chính xác) và câu hỏi cơ bản là làm tôi tức giận.Làm cách nào để truy cập phần tử thứ N của một mảng trong PHP

Tôi có một mảng chứa các giá trị mà tôi không biết.

Trong java, để có một cái nhìn tại mục 2, tôi sẽ sử dụng một cái gì đó giống như

var = array[1] 

Tôi hiểu mảng Php là cặp khóa-giá trị, nhưng làm thế nào tôi có thể chỉ cần nhìn vào giá trị thứ n trong một mảng để xem cặp khóa-giá trị của nó và thậm chí tốt hơn, sau đó chỉ truy cập khóa/giá trị?

+3

Theo mặc định, PHP cũng sử dụng int như phím, bắt đầu từ 0. – Sugar

+2

Mảng * có thể * được mảng sản, hoặc * có thể * được hashmaps ; đó là một loại cho cả hai, và có, điều này có thể rất khó hiểu. Không có cách tích hợp để kiểm tra điều này (xem: http://stackoverflow.com/questions/173400/php-arrays-a-good-way-to-check-if-an-array-is-associative-or theo sau? rq = 1). Lưu ý rằng một số chức năng/hoạt động có thể chuyển đổi một "mảng" thành "Hashmap" hoặc ngược lại ... Loại 'mảng' là một trong những sai sót thiết kế chính của ngôn ngữ IMHO ... – Carpetsmoker

+2

var_dump ($ array) –

Trả lời

16

Nếu phím của bạn là số, sau đó nó hoạt động giống hệt nhau:

$arr = ['one', 'two', 'three']; // equivalent to [0 => 'one', 1 => 'two', 2 => 'three'] 
echo $arr[1]; // two 

Nếu phím của bạn không phải là số hay không liên tục số, nó được một chút phức tạp hơn:

$arr = ['one', 'foo' => 'bar', 42 => 'baz']; 

Nếu bạn biết khóa bạn muốn:

echo $arr['foo']; // bar 

Tuy nhiên, nếu bạn chỉ biết bù đắp, bạn có thể thử này:

$keys = array_keys($arr); 
echo $arr[$keys[1]]; 

Hoặc số lượng reindex mảng:

$values = array_values($arr); 
echo $values[1]; 

Hoặc cắt nó:

echo current(array_slice($arr, 1, 1)); 

Hầu hết có thể bạn muốn lặp lại thông qua mảng mặc dù vậy, đó thường là những gì bạn làm với các mảng nội dung không xác định. Nếu nội dung không xác định, thì có vẻ như kỳ lạ là bạn quan tâm đến một bù trừ cụ thể.

foreach ($arr as $key => $value) { 
    echo "$key: $value", PHP_EOL; 
} 
+0

Cảm ơn. Tôi đã sử dụng '$ keys = array_keys ($ arr); echo $ arr [$ keys [1]]; ' – myol

+0

Lý do tôi muốn chỉ có một, là bởi vì lặp qua tất cả chúng chỉ làm treo trang. – myol

+2

Sau đó, bạn có thể làm điều gì đó sai trái. Một lặp đi lặp lại đơn giản không nên sụp đổ bất cứ điều gì. – deceze

1

Nếu bạn muốn truy cập các yếu tố thứ n mà không biết chỉ mục, bạn có thể sử dụng next()n lần để đạt được yếu tố thứ n.

for($i = 0; $i<$n; $i++){ 
    $myVal = next(); 
} 
echo $myVal; 

Có nhiều cách khác để truy cập phần tử cụ thể, đã được đề cập bởi @deceze.

0

Nếu bạn muốn truy cập mọi phần tử N-thứ:

$n = 3; 
foreach (array_keys($arr) as $i => $key) { 
    if (($i+1) % $n) { 
     continue; 
    } 

    $value = $arr[$key]; 
} 
Các vấn đề liên quan