2010-03-04 22 views
5
(I'm a beginner) 

kịch bản của tôi sử dụng các tiêu chuẩnarray_diff & phím số renumbering

$c = 0; 
$t = count($array); 

while ($c < $t) { 
    $blah = $array[$c]; 
    ++$c; 
} 

khá rộng rãi. Nhưng tôi chỉ chạy vào một tình huống mà tôi cũng cần array_diff và nó phá vỡ tất cả để địa ngục bởi vì bây giờ các phím số có khoảng trống. Tôi nhận được lỗi Undefined offset khắp nơi.

Làm cách nào để đặt lại các phím số của một mảng? Thứ tự của các đối tượng trong mảng là không liên quan.

Trả lời

25

Để thiết lập lại các phím, bạn có thể sử dụng array_values():

$array = array_values($array); 
7

Bạn không cần phải thiết lập lại các phím của bạn mảng: bạn phải thay đổi cách bạn đang trải qua nó.

Thay vì sử dụng một vòng lặp while và truy cập vào elemnts mảng bởi chỉ mục, bạn nên sử dụng một vòng lặp foreach, mà sẽ chỉ giúp bạn có được các yếu tố từ mảng:

foreach ($array as $key => $value) { 
    // $key contains the index of the current element 
    // $value contains the value of the current element 
} 
+0

+1 cho bạn vì tôi chắc chắn sẽ sử dụng kiến ​​thức đó ở nơi khác. Nhưng tờ séc phải đi đến Tatu để đánh Bullseye. Cảm ơn Pascal. – Drew

+0

@Andrew: bạn được chào đón :-) ;; Vâng, tôi biết tôi đã không thực sự trả lời câu hỏi, nhưng tôi nghĩ rằng điều này sẽ hữu ích anyway * (và tôi luôn luôn sử dụng foreach để lặp qua các phần tử mảng) * ;; và khi tôi nhìn thấy một câu trả lời khác đã nói về 'mảng_values', tôi đã không đặt nó trong của tôi. –

+0

Tôi đánh giá cao bạn dành thời gian để trả lời, tôi thực sự làm. Tôi vẫn nhận được đôi chân của tôi ướt và được công nhận trong giai đoạn "Tôi đã có một cú đá thực sự kickass" học tập để chương trình. Vì vậy, một lần nữa, cảm ơn bạn đã mở rộng và hữu ích đẩy xuống con đường hướng tới thiết kế mã thích hợp hơn. – Drew

2

Cảm ơn bạn Tatu.

Đối với lulz, tôi sẽ chia sẻ với bạn hack ngốc sau tôi sử dụng trong khi chờ đợi một câu trả lời hợp lý:

$badArray = array_diff($allData, $myData); 

$string = implode(",",$badArray); 

$dump = explode(",",$string); 

$goodArray = $dump; 

làm việc. Làm tôi cảm thấy bẩn thỉu, nhưng nó hoạt động.

Các vấn đề liên quan