PHP에서 배열로부터 '열'을 추출하는 함수가 있습니까?
PHPPHP에서 배열로부터 '열'을 추출하는 함수가 있습니까?
다음과 같은 구조의 배열이 있습니다.
array(array('page' => 'page1', 'name' => 'pagename1')
array('page' => 'page2', 'name' => 'pagename2')
array('page' => 'page3', 'name' => 'pagename3'))
'name'키의 값만 가진 새로운 배열을 반환하는 내장 함수가 있습니까? 그래서 나는 얻을 것입니다 :
array('pagename1', 'pagename2', 'pagename3')
해결법
-
==============================
1.
왜 함수가 내장되어 있어야합니까? 아니요, 아무 것도 없습니다. 직접 작성하십시오.
이 스레드의 다른 스레드와는 달리 멋지고 쉬운 스레드가 있습니다.
$namearray = array(); foreach ($array as $item) { $namearray[] = $item['name']; }
-
==============================
2.
PHP 5.5에서 array_column ()을 사용할 수 있습니다 :
<?php $samples=array( array('page' => 'page1', 'name' => 'pagename1'), array('page' => 'page2', 'name' => 'pagename2'), array('page' => 'page3', 'name' => 'pagename3') ); $names = array_column($samples, 'name'); print_r($names);
실제 상황에서보기
-
==============================
3.
다음을 수행하는 기능적인 방법이 있습니다.
$data = array( array('page' => 'page1', 'name' => 'pagename1'), array('page' => 'page2', 'name' => 'pagename2'), array('page' => 'page3', 'name' => 'pagename3')); $result = array_map(create_function('$arr', 'return $arr["name"];'), $data); print_r($result);
-
==============================
4.
잘있다. 최소한 PHP> 5.5.0 이상이면 array_column이라고합니다.
PHP 함수는 선택적인 $ index_keyparameter를 취합니다 - PHP 웹 사이트에 따라 - 상태 :
여기에 대한 답변에서 선택적 매개 변수없이 박탈 된 버전을 볼 수 있습니다. 나는 그것을 필요로했다, 그래서, 여기 완전한 기능이있다 :
if (!function_exists('array_column')) { function array_column($array, $column, $index_key = null) { $toret = array(); foreach ($array as $key => $value) { if ($index_key === null){ $toret[] = $value[$column]; }else{ $toret[$value[$index_key]] = $value[$column]; } } return $toret; } }
-
==============================
5.
fuentesjrs 솔루션과 비슷하지만 사용자 정의 콜백과 함께 array_walk ()를 사용하여 좀 더 일반 :
// Define the callback function extract_named_sub_elements(&$item, $key, $name) { $item = $item[$name]; } // Test data $original = array( array('page' => 'page1', 'name' => 'pagename1'), array('page' => 'page2', 'name' => 'pagename2'), array('page' => 'page3', 'name' => 'pagename3'), ); // Use a copy, as array_walk() operates directly on the passed in array $copy = $original; // Substitute 'name' with whatever element you want to extract, e.g. 'page' array_walk($copy, 'extract_named_sub_elements', 'name'); print_r($copy);
-
==============================
6.
if (!function_exists('array_column')) { function array_column($array,$column) { $col = array(); foreach ($array as $k => $v) { $col[]=$v[$column]; } return $col; } }
이 기능은 PHP 버전이 5.5 미만인 경우 작동하며 함수가있는 경우 기능이 저하됩니다.
-
==============================
7.
예, 찾고있는 것을 수행하는 array_column이라는 PHP 내장 함수가 있습니다.
$ name_keys = array_column ($ array, 'name')과 같이 호출 할 것입니다; 당신이 찾고있는 결과를 얻으려면.
자세한 내용은 PHP 매뉴얼의 다음 항목을 참조하십시오.
http://php.net/manual/en/function.array-column.php
-
==============================
8.
ArrayIterator 클래스를 확장하고 mixed current (void) 메서드를 재정의 할 수 있습니다.
class Foo extends ArrayIterator { protected $index; public function __construct($array, $index) { parent::__construct($array); $this->index = $index; } public function current() { $c = parent::current(); return isset($c[$this->index]) ? $c[$this->index] : null; } } $a = array( array('page' => 'page1', 'name' => 'pagename1'), array('name' => '---'), array('page' => 'page2', 'name' => 'pagename2'), array('page' => 'page3', 'name' => 'pagename3') ); $f = new Foo($a, 'page'); foreach($f as $e) { echo $e, "\n"; }
인쇄물
page1 page2 page3
-
==============================
9.
나는 이것을 위해 함수를 내장 할 필요가 없다고 생각한다. 배열에 배열이있을 수 있습니다.
$samples=array( array('page' => 'page1', 'name' => 'pagename1'), array('page' => 'page2', 'name' => 'pagename2'), array('page' => 'page3', 'name' => 'pagename3') ); $output1=array(); $output2=array(); foreach($samples as $sample){ array_push($output1,$sample['name']); $output2[]=array_splice($sample,1); } print_r($output1); print_r($output2);
in $ output1은 'page'indexing '부분을 제거하고 $ output2 만 제거하려는 경우 원하는 출력입니다.
해당 배열의 모든 값이 필요하고 배열에 숫자로 인덱스가 있다면 사용할 수 있습니다.
$array_1=array_values($samples);
하지만 내가 이해하는 한, 당신은 이것을 원치 않았습니다.
-
==============================
10.
이것은 array_reduce에 대한 아주 쉬운 호출이다.
$valuesOnly = array_reduce($modelData, function ($carry, $item) { return array_merge($carry, $item['id']); }, []);
-
==============================
11.
이전 질문인데도 여전히 관련성이 높고 많은 개발자가 PHP> = 5.5를 사용하지 않기 때문에 여기에 게시하고 싶습니다.
다음과 같은 배열이 있다고 가정 해 보겠습니다.
Array ( [files] => Array ( [name] => Array ( [0] => file 1 [1] => file 2 [2] => file 3 ) [size] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [error] => Array ( [0] => abc [1] => def [2] => ghi ) ) )
원하는 결과물은 다음과 같습니다.
Array ( [0] => Array ( [0] => file 1 [1] => 1 [2] => abc ) [1] => Array ( [0] => file 2 [1] => 2 [2] => def ) [2] => Array ( [0] => file 3 [1] => 3 [2] => ghi ) )
다음과 같이 첫 번째 매개 변수로 전달 된 함수 이름없이 array_map () 메서드를 사용하면됩니다.
array_map(null, $a['files']['name'], $a['files']['size'], $a['files']['error']);
불행히도 둘 이상의 배열을 전달할 경우 키를 매핑 할 수 없습니다.
-
==============================
12.
array_values를 의미합니까?
편집 : 주석없는 downvote 주셔서 감사. 함수에 대한 문서를 실제로 볼 시간을 가졌다면, 사용자는 자신의 array_values_recursive 함수를 작성하는 예제를 제공하는 첫 번째 주석을 보았을 것입니다. 그것을 array_walk와 결합하면 'name'열을 하드 코딩하지 않아도 될 멋진 기능을 얻을 수 있습니다. 쳇.
-
==============================
13.
PHP 5.5에서 array_column이 원하는 것입니다.
실제로는 몇 가지 가능한 용도가 있습니다.
아래의 샘플 배열을 사용하여 array_column을 사용하는 여러 가지 방법이 있습니다.
$a = array( array('id' => '1', 'name' => 'Joe'), array('id' => '2', 'name' => 'Jane') );
배열로 단일 열 검색
$b = array_column($a, 'name');
줄까요? 정상적인 배열 당 0부터 시작하는 자동 키를 확인하십시오.
$b[0] = 'Joe'; $b[1] = 'Jane';
컬럼을 인덱스로 갖는 전체 배열 검색.
$c = array_column($a, NULL, 'id');
결과는 다음과 같습니다.
$c[1] = array('id' => '1', 'name' => 'Joe'); $c[2] = array('id' => '2', 'name' => 'Jane');
세 번째 매개 변수로 선택한 열이 각 항목의 키가되는 방식에 주목하고 두 번째 매개 변수를 null로 설정하여 전체 배열을 가져옵니다.
물론 마지막 사용법은 두 번째 매개 변수와 세 번째 매개 변수를 설정하는 것입니다.
$d = array_column($a, 'name', 'id');
다음과 같이 당신에게 줄 것입니다.
$d[1] = 'Joe'; $d[2] = 'Jane';
개인적으로 선택 옵션 목록을 작성하기 위해 전체 3 개의 매개 변수를 사용합니다. 옵션이있는 테이블이있는 경우 테이블을 쿼리하고 결과를 가져 와서이 값으로 전달하여 값과 레이블로 키가있는 목록을 가져옵니다. 이것은 색인으로도 교차해야하는 정보 세트를 작성하는 훌륭한 방법입니다.
from https://stackoverflow.com/questions/1494953/is-there-a-function-to-extract-a-column-from-an-array-in-php by cc-by-sa and MIT lisence
'PHP' 카테고리의 다른 글
PHP - 부동 소수점 정밀도 [중복] (0) | 2018.09.03 |
---|---|
PHP로 시간 차이를 얻는 방법 (0) | 2018.09.03 |
$ this 위에 자기를 사용할 때? (0) | 2018.09.03 |
서 친절한 URL css img js 작동하지 않음 (0) | 2018.09.03 |
WHERE 절을 사용하여 쿼리에 배열 전달하기 (0) | 2018.09.03 |