2016-07-12 3 views
3

나는 일부 데이터를 가지고 :PowerShell에서 2 차원 배열을 만들고 채우는 방법은 무엇입니까?

[email protected](1,2,3) 
[email protected]('Mark','Revekka','Johan') 
[email protected](190,'',178) 

어떻게 테이블과 같은 하나 개의 배열을받을 수 있나요?

$array[1].name 

과 같은 추가 :

1 Mark 190 
2 Revekka 
3 Johan 178 

나는 다음과 같은 정보를 얻으려면이 가능

$array+=['Helena',168] 

인가?

+0

정말 수 없습니다. 2 차원 배열 (중첩 배열)을 가질 수 있지만 헤더가 없으므로'$ array [1] .name'을 할 수 없습니다. 이름을 가진 객체의 1 차원 배열을 가질 수 있지만 2 차원 배열은 아닙니다. 어쨌든'[ 'Helena', 168]'와 같은 행을 추가 할 수 없습니다. ID가 어디에 있느냐? 그리고'$ array [1]'이 배열 인덱스 (요소 2)인지 ID 룩업 (요소 ID == 1)인지 여부는 분명하지 않습니다. 사전에 사전이 필요합니다. 당신은 그들 중 누구라도 가질 수 있지만 함께 이해할 수 없기 때문에 그들 모두를 가질 수는 없습니다. – TessellatingHeckler

+0

오케이, 더 나은 결정은 무엇입니까? – Piter

+0

PHP처럼 배열을 갖고 싶습니다 : [1 => [ 'name'=> "Mark", 'height'=> 190], 2 => [ 'name'=> 'Revekka', 'height '=> NULL] 3 => ['name '=> "Johan",'height '=> 178] ] – Piter

답변

4

당신은이 작업을 수행 할 수 있습니다 :

$data = @(
    [PSCustomObject]@{ 
     Name = "Mark" 
     Height = 190 
    }, 
    [PSCustomObject]@{ 
     Name = "Revekka" 
     Height = "" 
    }, 
    [PSCustomObject]@{ 
     Name = "Johan" 
     Height = 178 
    } 
) 

$data[0].Name # returns Mark 

#to add an item you can do 

$data += [PSCustomObject]@{ 
    Name = "Helena" 
    Height = 168 
} 

$data | ft -AutoSize 

<# returns 

Name Height 
---- ---- 
Mark  190 
Revekka  
Johan 178 
Helena 168 

#> 
2

는 PHP 버전처럼하기 위해서는 사전의 사전입니다 :

[email protected](1,2,3) 
[email protected]('Mark','Revekka','Johan') 
[email protected](190,'',178) 

$data = @{} 

$id | foreach { 
    $data[$_] = @{ 
     "Name"=$name[$_-1] 
     "Height"=$height[$_-1] 
    } 
} 

$data[1].Name 

그런 다음 새로운 하나를 추가, 당신은 가능한 다음을 알 필요가 ID를 사용하여 다른 곳에서 추적하거나 사전에서 계산합니다.

$nextID = ($data.Keys | sort | select -Last 1) + 1 
$data[$nextID] = @{Name='Helena'; 'Height'=168} 
1

또 다른 예가 whi 각 항목을 통해 채널 반복하고 만들 PSCustomObject :

[email protected](1,2,3) 
[email protected]('Mark','Revekka','Johan') 
[email protected](190,'',178) 

0 .. ($id.Count -1) | ForEach { 
    [PsCustomObject]@{Id = $id[$_]; Name = $name[$_]; Height = $Height[$_];} 
} 

출력 :

Id Name Height 
-- ---- ------ 
1 Mark  190 
2 Revekka  
3 Johan  178 
관련 문제