다차원 배열 값에 액세스하기
PHP다차원 배열 값에 액세스하기
몇 시간 동안 어지럽히고, 땀을 흘리며 내 머리카락을 뽑아 낸 후에도 나는 여전히 이러한 가치에 접근 할 수 없습니다. 첫 번째 레벨의 배열을 반복하고 싶습니다. 기본 'foreach'루프를 사용하면 충분히 간단하지만 두 번째 하위 배열의 '['적합성 '] 배열을 얻을 수없는 것 같습니다. 주위를 둘러 보았지만 루핑을하기까지는 탐구하지 않는 것 같은 기본적인 기본 튜토리얼 이외의 것을 얻을 수없는 것 같습니다.
중첩 / 하위 배열 즉, '['Species_name ']'의 값에 액세스하려고합니다.
나는 정렬이 약간의 문제이기 때문에 연관 키를 사용하고 싶지 않다.
Array
(
[0] => Array
(
[id] => 1
[name] => Bradeley Hall Pool
[postcode] => CW1 5QN
[lat] => 53.10213
[lon] => -2.41069
[size] => 1.60
[pegs] => 21
[distance] => 26.6
)
[1] => Array
(
[id] => 2
[name] => Farm Pool
[postcode] => CW9 6JQ
[lat] => 53.320502
[lon] => -2.549049
[size] => 0.88
[pegs] => 8
[distance] => 15.4
[suitability] => Array
(
[0] => Array
(
[fk_water_id] => 2
[fk_species_id] => 4
[species_name] => Barbel
[species_rating] => 1
[record_id] => 1
[weight_kg] => 2.721554
[length_cm] => 40
[height_cm] => 30
)
)
)
)
해결법
-
==============================
1.아마 당신을 트립하는 것은 배열이 단순히 배열이 아니므로 배열의 배열이므로 첫 번째 두 번째 최상위 요소의 species_name 속성을 얻으려는 예제에서는
아마 당신을 트립하는 것은 배열이 단순히 배열이 아니므로 배열의 배열이므로 첫 번째 두 번째 최상위 요소의 species_name 속성을 얻으려는 예제에서는
$array[1]["suitability"][0]["species_name"];
첫 번째 배열에는 액세스 할 수 없도록 "적합성"값이 포함되어 있지 않습니다. foreach 루프에서는 다음과 비슷한 구조를 사용할 수 있습니다.
foreach($array as $value){ if (isset($value["suitability"])){ echo $value["suitability"][0]["species_name"]; } }
-
==============================
2.PHP : RecursiveArrayIterator 클래스를 살펴 보시기 바랍니다.
PHP : RecursiveArrayIterator 클래스를 살펴 보시기 바랍니다.
이것에 의해, 복수의 중첩 ArrayIterator를 반복 처리 할 수 있습니다. 만약 당신이 어떤 ArrayIterator를 사용하지 않는다면, 당신은 그것들을 사용해보아야한다.
-
==============================
3.Iracicot의 답변은 아래의 RecursiveIterator 클래스를 사용하여 재귀 배열의 값에 액세스하는 방법을 찾는데 도움이되었습니다. 내 솔루션은 http://php.net/manual/en/class.recursiveiteratoriterator.php에 따라 더욱 유용한 RecursiveIteratorIterator 클래스를 사용하여 종료되었습니다. 최종 제품이 내가 개인적으로 훨씬 쉽게 작업 할 수있는 평평한 배열이라는 매우 유용한 사실을 명심하십시오.
Iracicot의 답변은 아래의 RecursiveIterator 클래스를 사용하여 재귀 배열의 값에 액세스하는 방법을 찾는데 도움이되었습니다. 내 솔루션은 http://php.net/manual/en/class.recursiveiteratoriterator.php에 따라 더욱 유용한 RecursiveIteratorIterator 클래스를 사용하여 종료되었습니다. 최종 제품이 내가 개인적으로 훨씬 쉽게 작업 할 수있는 평평한 배열이라는 매우 유용한 사실을 명심하십시오.
<table style="border:2px;"> <tr> <th>Time</th> <th>Service Number</th> <th>Destination</th> </tr> <?php foreach($stops as $buses){ $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($buses)); $bus = (iterator_to_array($iterator,true)); print('<tr><td>'.$bus['AimedDepartureTime'].'</td><td>'.$bus['PublishedLineName'].'</td><td>'.$bus['DirectionName'].'</td></tr>'); } ?> </table>
-
==============================
4.폴백을 사용하여 다차원 배열에서 중첩 된 요소 값을 기본값으로 가져 오려면 다음을 사용할 수 있습니다.
폴백을 사용하여 다차원 배열에서 중첩 된 요소 값을 기본값으로 가져 오려면 다음을 사용할 수 있습니다.
Arr::getNestedElement($array, $keys, $default = null)
이 라이브러리의 내용은 다음과 같습니다.
Arr::getNestedElement($array, [$index1, 'suitability', $index2, 'species_name'])
배열에 존재하지 않는 키에 액세스하려고하면 경고 대신 null (또는 지정된 기본값)이 반환됩니다.
from https://stackoverflow.com/questions/17139453/php-accessing-multidimensional-array-values by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP 메일 : HTML을 보내는 방법? (0) | 2018.09.20 |
---|---|
PHP에서 XML 파일의 속성 값을 가져 오는 방법은 무엇입니까? (0) | 2018.09.20 |
pdo - 멤버 함수 호출 prepare () 비 - 객체 [duplicate] (0) | 2018.09.20 |
PHP는 다차원 배열 중복 제거 (0) | 2018.09.20 |
PHP에서 HTML 전자 메일 보내기 (0) | 2018.09.20 |