プログラム言語 é…列

é…列ã®åŸºåº•クラス


int[][] array = new int[][]{
  new int[]{},
  new int[]{1},
  new int[]{2,3}
};

object o = array;
é…列をå«ã‚€å…¨ã¦ã®åž‹ã¯objectを継承ã—ã¦ã„ã‚‹ã®ã§æ ¼ç´å¯èƒ½

int i = ((int[][])o)[2][1];
// i : 3
int[][] array = new int[][]{{},{1},{2,3}};

Object o = array;
é…列をå«ã‚€å…¨ã¦ã®åž‹ã¯objectを継承ã—ã¦ã„ã‚‹ã®ã§æ ¼ç´å¯èƒ½

int i = ((int[][])o)[2][1];
// i : 3
$ary = [];
let ary = [];

é…åˆ—ã®æ“作


文字列→é…åˆ—å¤‰æ› / 文字列â†é…列変æ›

string samplestr = "1,2,3,4,5";
string[] ary = samplestr1.Split(new char[] {','});
myAray[1] : "2"

string samplestr = @"aaaa@@bbb,,@@cc dddd,eee f";
string[] ary = samplestr.Split(
 separator: new string[]{ ",", " ", "@@" },
 options: StringSplitOptions.RemoveEmptyEntries);
 
string[] ary = samplestr.Split(
 separator: new string[] { ",", " ", "@@" },
 options: StringSplitOptions.None);
 
文字列ã§ãªãã€æ–‡å­—ã§åˆ†å‰²ã™ã‚‹å ´åˆã€€
string[] ary = samplestr.Split(
 separator: new [] { ',', ' ', '@' },
 options: StringSplitOptions.~);

Dim samplestr As String = "1,2,3,4,5"
Dim myAray() As String = samplestr.Split(",")
'myAray(1):2
Dim ReturnValue() As String

' "," を区切りã¨ã—ã¦åˆ†ã‘ã‚‹
ReturnValue() = Split("文字列1,文字列2,文字列3", ",")

ReturnValue(0) = "文字列1"
ReturnValue(1) = "文字列2"
ReturnValue(2) = "文字列3"

var Text = "A,B,C"
var Elm = Text.split(",");
⇒ Elm[0] : "A"
⇒ Elm[1] : "B"
⇒ Elm[2] : "C"
文字列→é…列
$ary = explode(',', 'aaa,bbb,ccc,ddd');
$ary[2]:ccc

é…列→文字列
$list = [1, 3, 5];
print( implode('_', $list) );
→1_3_5

$list = [
 '1' => 'A1',
 '3' => 'A3',
 '5' => 'A5',
];
print( implode('_', $list) );
→A1_A3_A5
キーã§ã¯ãªãã€å€¤ãŒé€£çµã•れる

split
æŒ‡å®šã®æ–‡å­—åˆ—ã‚’ã€æŒ‡å®šã®æ–‡å­—ã§åˆ†å‰²ã—ã¦é…åˆ—ã«æ ¼ç´ã™ã‚‹

#æŒ‡å®šã®æ–‡å­—列(分割対象)
my $str= "a/b/c/d/e";

#æŒ‡å®šã®æ–‡å­—ã§åˆ†å‰²ã™ã‚‹å ´åˆ
my @ary = split('/' , $str);

#æ­£è¦è¡¨ç¾ãƒªãƒ†ãƒ©ãƒ«ã§åˆ†å‰²ã™ã‚‹å ´åˆ
my @ary = split(/\// , $str);
#「/ã€ã‚’å¼•æ•°ã§æŒ‡å®šã™ã‚‹å ´åˆã¯ã€Œ\ã€ã‚’付ã‘ã‚‹(エスケープ)
#my @ary = split(/// , $str); ã¯ãƒ€ãƒ¡

#指定数ã®ã¿è¦ç´ ã«åˆ†å‰²ã™ã‚‹ã€‚残りã¯å˜ä¸€ã®è¦ç´ 
my @ary = split('/' , $str, 3);
⇒ $ary[0] : a
⇒ $ary[1] : b
⇒ $ary[2] : c/d/e


qw演算å­
「 (スペース)ã€ã§åŒºåˆ‡ã‚‰ã‚ŒãŸæ–‡å­—ã‚’é…åˆ—ã«æ ¼ç´ã™ã‚‹
my @ary = qw( 1 2 3 );
⇒ @ary = (1,2,3);ã¨åŒã˜
区切り文字(デミリタ)ã«ã¯ã©ã‚“ãªæ–‡å­—ã§ã‚‚使用å¯ã€Œqw//ã€ã€ã€Œwq{}ã€ã€ã€Œqw[]ã€ã€ã€Œqw<>ã€ä»–
my @ary = qw/ 1 2 3 /;
my @ary = qw{ 1 2 3 };
my @ary = qw[ 1 2 3 ];
my @ary = qw< 1 2 3 >;


join
※é…列をçµåˆã™ã‚‹
my @ary = (1,2,3);
my @str = join('-' , @ary);
⇒ @str : 1-2-3

メールアドレスã«ãŠã„ã¦ã€ãƒ­ãƒ¼ã‚«ãƒ«ãƒ‘ートã¨ãƒ‰ãƒ¡ã‚¤ãƒ³åを「@ã€ã§çµåˆã™ã‚‹
(é…列ã§ãªãç¬¬äºŒãƒ»ç¬¬ä¸‰å¼•æ•°ã«æ–‡å­—列を渡ã™ã‚„り方もå¯)
my $local = "aaa";
my $domain = "test.com";
my $adress = join("@" , $local , $domain);
⇒ aaa@test.com

#改行を挟む
my $str = join('\n' , @str);


é…列ã®ã‚³ãƒ”ー

clone()
é…列ã‹ã‚‰é…列ã¸å…¨è¦ç´ ã‚’コピー
é…列åŒå£«ã®è¦ç´ æ•°ã¯ç•°ãªã£ã¦ã„ã¦ã‚‚OK

int[] before = new int[]{5,5,5};
int[] after = before.clone();
⇒after {5,5,5}


System.arraycopy()
é…列ã‹ã‚‰é…åˆ—ã¸æŒ‡å®šã®è¦ç´ ã‚’コピー
é…列åŒå£«ã®è¦ç´ æ•°ã¯åŒã˜

int[] before = new int[]{5,5,5};
int[] after = new int[3];

//System.arraycopy(src, srcPos, dest, destPos, length)
System.arraycopy(before, 1, after, 1, 2);
before {5,5,5}
index:1ã‹ã‚‰2文字をコピー↓
↓
after {0,0,0}
index:1ã‹ã‚‰2文字ã¸ã‚³ãƒ”ー↓
↓
after {0,5,5}

'é…列コピー
Dim Before() As Integer
Dim After() As Integer

For elmCnt = 0 To UBound(Before) – 1
  After(elmCnt) = Before(elmCnt)
Next elmCnt

Variantåž‹ã®é…列ã§ã‚れã°
After = Before
ã‚‚å¯ã€‚
ã—ã‹ã—é…ã„。

サブルーãƒãƒ³ã¸ã®é…列渡ã—

é…列→é…列
int ary[] = { 1, 2, 3, 4, 5 };

int ret = fnPlus(ary);
ret:15


int fnPlus(int p[])
{
 int sum = 0;
 for (int i = 0; i < 5; i++)
 {
  sum += p[i];
 }
 return sum;
}


é…列→ãƒã‚¤ãƒ³ã‚¿
int ret = fnPlus(ary);
ret:15

int fnPlus(int *p)
{
 é…列ã®å…ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–å¾—
 p = &ary[0];

 
 int sum = 0;
 for (int i = 0; i < 5; i++)
 {
  sum += p[i];
 }
 return sum;
}


ãƒã‚¤ãƒ³ã‚¿ãƒ¼ã«ã‚ˆã‚‹é…列æ“作

通常é…列
int array[5] = { 1, 2, 3, 4, 5 };
arrayã«é…列ã®å…ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’æ ¼ç´

int ret;
ret = array[0];
ret = *array;
ret:1

ret = array[1];
ret = *(array + 1);
ret:2

ret = fnPlus(array, 5);
ret:15
ret = fnPlus(&array[0], 5);
é…列ã®å…ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’渡ã™
ret:15


メモリ領域ã®å‹•的確ä¿
ãƒã‚¤ãƒ³ã‚¿å¤‰æ•°ï¼špã«é…列ã®å…ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’æ ¼ç´

int *p = new int[5]{ 1, 2, 3, 4, 5 };

ret = *(p + 1);
ret:2
ret = *(p + 2);
ret:3

ret = fnPlus(p, 5);
ret:15

delete p;


int fnPlus(int *p, int elmCnt)
{
 int sum = 0;
 for (int i = 0; i < elmCnt; i++)
 {
  sum += *(p + i);
 }
 return sum;
}

è¦ç´ ã®æ“作


åˆæœŸåŒ–・è¦ç´ æŒ‡å®š

int[] myInt = {1,2};
myInt[0] = 1;
myInt[1] = 2;
myInt[2] = 3; ⇒エラー

var x1 = myInt.First();
var x2 = myInt.Last();
var x3 = myInt.Min();
var x4 = myInt.Max();
var x5 = myInt.Count();
※é…列ã¯å„IEnumerable拡張メソッドを使用å¯èƒ½
「プログラム言語 LINQ.Enumerableã€å‚ç…§


型推論を用ã„ãŸé…列
var ary = new[] { 1, 2, 3, 4, 5 };

var ary = new[]
{
 new[] { 1,2,3 },
 new[] { 1 },
 new[] { 1,2 }
};

匿åクラスを用ã„ãŸé…列
var ary = new[]
{
 new { x = 1, y = 1 },
 new { x = 2, y = 1 },
 new { x = 3, y = 1 }
};

int myArray1[] = { 1, 2, 3};
// myArray[0]:1
// myArray[1]:2
// myArray[2]:3

// int myArray[3] = { 1, 2, 3, 4 };
// エラー

int myArray2[3] = { 1, 2 };
// myArray[0]:1
// myArray[1]:2
// myArray[2]:0

for each (int var in myArray2)
{
  Console::WriteLine(var);
  // → 1 2 0
};

// é…列全体ã®ãƒã‚¤ãƒˆæ•°
int size = sizeof(myArray2);
// 12

// è¦ç´ ã®ãƒã‚¤ãƒˆæ•°
int size = sizeof(myArray2[0]);
// 4

// è¦ç´ æ•°
int size = sizeof(myArray2) / sizeof(myArray2[0]);
// 3


マクロを使用
wchar_t myChar1[] = L"VisualC++";
wchar_t *myChar2 = L"VisualC#";

int elmCnt;
elmCnt = _countof(myChar1);
→10
終端文字(\0)ã‚’å«ã‚“ã è¦ç´ æ•°


elmCnt = _countof(myChar2);
コンパイルエラー
é…列ã—ã‹å¼•æ•°ã«æŒ‡å®šã§ããªã„。


Dim myInt() As Integer = {1, 2}
myInt(0) = 1
myInt(1) = 2
myInt(2) = 3 ⇒エラー

Dim x1 As Integer = myInt.First()
Dim x2 As Integer = myInt.Last()
Dim x3 As Integer = myInt.Max()
Dim x4 As Integer = myInt.Min()
Dim x5 As Integer = myInt.Count()
Dim MyArray(3) As String
Dim MyArray(2 To 5) As String

MyArray(0) = "A"
MyArray(1) = "B"
MyArray(2) = "C"
MyArray(3) = "D" â†ã‚¨ãƒ©ãƒ¼


Dim myAry() As Integer
Dim elmCnt As Integer

elmCnt = UBound(myAry)
'実行時エラー

ReDim myAry(0)
elmCnt = UBound(myAry)
elmCnt:0


Dim myAry() As Variant
Dim elmCnt As Integer

myAry() = Array(1, 2, 3, 4, 5)
elmCnt = UBound(myAry)
elmCnt:4
int[] array = new int[3];
array[0] = 5;
array[1] = 5;
array[2] = 5;
array[3] = 5; ⇒ 実行時エラー

int array[] = new int[3]; ã‚‚å¯

宣言ã¨åŒæ™‚ã«è¦ç´ ã‚’設定
int array[] = new int[]{5,5,5};
int array[] = {5,5,5};
//方法①
var strTest = new Array(3);

strTest[0] = 'test1';
strTest[1] = 'test2';
strTest[2] = 'test3';


//方法②
var strTest = new Array('test1', 'test2', 'test3');
è¦ç´ æŒ‡å®šè¿½åŠ 
$ary[0] = '1番目è¦ç´ ';
$ary[1] = '2番目è¦ç´ ';
$ary[2] = '3番目è¦ç´ ';

range()関数利用
$ary = [1, 2, 3];  → 1, 2, 3
$ary = array(1, 2, 3);
$ary = range(1, 5);  → 1, 2, 3, 4, 5
$ary = range(1, 10, 2);  → 1, 3, 5, 7, 9
$ary = range('a', 'f');  → 'a', 'b', 'c', 'd', 'e', 'f'
$ary = array_fill(0, 3, 'foo');  → "foo", "foo", "foo"
$ary = array_pad(array(), 3, 'foo');  → "foo", "foo", "foo"

é…列判定
if (is_array($ary)) echo 'é…列ã§ã™';

用素数
$cnt = count($ary);

ary = (1,2,3)
print(ary) #(1,2,3)
print(ary[0]) #1

文字列をé…列ã¨è¦‹ãªã™
s = 'ABCD'[0]
A
※変数ã«ã€Œ@ã€ã‚’付ã‘る。arrayã®ã€Œaã€

@x[0] = 1;
@x[1] = 'aaa';

print "@[1]\n";
⇒aaa

@x = (1, 'two');
@x[2] = '3′;
@x[3..4] = ('four', 'five');

print "@x\n";
print "@x[1..3]\n";
⇒1 two 3 four five
⇒two 3 four


最大Index値ã€è¦ç´ æ•°

「#ã€ã‚’付ã‘ã‚‹
my @ary = (1,2,3);
my $cnt = $#ary;
⇒2 (Index値)

何も付ã‘ãªã„
my @ary = (1,2,3);
my $cnt = @ary;
⇒3 (è¦ç´ æ•°)

「scalarã€ã‚’付ã‘ã‚‹
my @ary = (1,2,3);
my $cnt = scalar @x
⇒3 (è¦ç´ æ•°)


é…列的代入
( $year, $month, $day) = (1978, 8, 4);
print $year\n";
print $month\n";
print $day\n";
⇒1978
⇒8
⇒4

ä¸¦ã³æ›¿ãˆ(自然順åº)

自然順åºï¼šæ•°å­—ã€ã‚¢ãƒ«ãƒ•ァベット順等
public static void main(String[] args) {
 Integer[] ary1 = {3, 1, 2};
 Arrays.sort(ary1);
 →1 2 3

 Object[] ary2 = { new String("aa"), new Integer(1), "5", 0};
 Arrays.sort(ary2); →実行時エラー
}

ary = (2, 5, 3.14, 1, -7)

#昇順
ary.sort()
print(ary)
# (-7, 1, 2, 3.14, 5)

#ASCIIコード(大文字ãŒå…ˆ)昇順
ary = ('elephant', 'Dog', 'cat')
ary.sort()
print(ary)
# ('Dog', 'cat', 'elephant')

#ASCIIコード(大文字ãŒå…ˆ)é™é †
ary.sort(reverse=True)
print(ary)
# ('elephant', 'cat', 'Dog')

#アルファベット昇順(è¦ç´ ã‚’å…¨ã¦å°æ–‡å­—ã¨ã¿ãªã™)
ary.sort(key=str.lower)
print(ary)
# ('cat', 'Dog', 'elephant')

ary = (2, 5, 3.14, 1, -7, 'elephant', 'Dog', 'cat')
ary.sort()
# エラー

è¦ç´ åˆ¤å®š

$ary = [];
$ret = in_array($ary);
$ret:false

$ary = [1,2,3];
$ret = in_array($ary);
$ret:true


è¦ç´ æ•°å¤‰æ›´

using System.Collections;

int[] ary = { 1, 2, 3 };
Array.Resize(array: ref ary, newSize: 5);
å‚照渡ã—ã§é…列を渡ã™ã€‚(「プログラム言語 変数/値渡ã—・å‚照渡ã—ã€å‚ç…§)

ary[3] = 4;
ary[4] = 5;
ary[5] = 6; ⇒ エラー


é…列⇒リスト変æ›
ArrayList list = new ArrayList(ary);

list.Add(value: 6);

リスト⇒é…列変æ›
ary = (int[])list.ToArray(typeof(int));
ary[5] += 1;
ary[5] : 7


ラムダå¼ã‚’利用ã—ãŸé…列ã®åˆæœŸåŒ–(å†é…ç½®)ã«ã¤ã„ã¦ã¯ã€Œãƒ©ãƒ ãƒ€å¼/é…列ã®åˆæœŸåŒ–ã€å‚ç…§

Imports System.Collections
Dim ary() As Integer = {1, 2, 3}

Array.Resize(array:=ary, newSize:=5)

ary(3) = 4
ary(4) = 5
ary(5) = 6 ⇒エラー

‘ é…列⇒リスト変æ›
Dim list As New ArrayList(ary)

list.Add(6)

‘ リスト⇒é…列変æ›
ary = DirectCast(list.ToArray(GetType(Integer)), Integer())
è¦ç´ æ•°ç„¡ã—ã§å®šç¾©
Dim MyArray() As String
Dim MyArray(3) As String

è¦ç´ æ•°å®šç¾©
Redim MyArray(3)
MyArray(0) = "A"
MyArray(1) = "B"
MyArray(2) = "C"
MyArray(3) = "D" â†ã‚¨ãƒ©ãƒ¼

既存è¦ç´ ã‚’ç¶­æŒã—ãŸã¾ã¾ã§æ–°è¦ç´ ã‚’追加
Redim Preserve MyArray(4)
MyArray(3) = "D" â†OK

Redim MyArray(4)ã ã¨å…¨è¦ç´ ãŒåˆæœŸåŒ–ã•れる
int[] oldAry = {1, 1, 2, 3, 3, 5};
int[] newAry = new int[oldAry.length + 1];

System.arraycopy(oldAry, 0, newAry, 0, oldAry.length);
[1, 1, 2, 3, 3, 5, 0]

Java8
int[] newAry = Arrays.copyOf(oldAry, oldAry.length + 1);
[1, 1, 2, 3, 3, 5, 0]
è¦ç´ è‡ªå‹•追加
$list[0] = '1番目è¦ç´ ';
$list[] = '2番目è¦ç´ ';
$list[] = '3番目è¦ç´ ';

指定è¦ç´ å‰Šé™¤
unset($list['3']);
unset($list[3]);

$listã®æœ«å°¾ã«è¿½åŠ 
array_push($list, 4);
$list[] = 4 ã®æ–¹ãŒé€Ÿã„

$listã®æœ«å°¾ã‹ã‚‰è¦ç´ ã‚’1ã¤å‰Šé™¤
array_pop($list);

$listã®å…ˆé ­ã‹ã‚‰è¦ç´ ã‚’1ã¤å‰Šé™¤
array_shift($list);

$listã®å…ˆé ­ã«è¿½åŠ 
array_unshift($list, 4);

先頭ã«è¿½åŠ 
var ary1[];
ary1.unshift('a');
ary1.unshift('b');
ary1.unshift('c');
→['c', 'b', 'a']

末尾ã«è¿½åŠ 
var ary2[];
ary2.push('1');
ary2.push('2');
ary2.push('3');
→['1', '2', '3']

連çµ

é€£çµæ–¹æ³•é‡è¤‡æ™‚ã®æŒ™å‹•
+第一é…列優先
array_merge()第二é…列優先
array_merge_recursive()両方優先

ã€ã€Œ+ã€ã«ã‚ˆã‚‹ä¸€èˆ¬é…列連çµã€‘ $list1 = [1, 3, 5];
Array(
  [0] => 1
  [1] => 3
  [2] => 5
)

$list2 = [1, 2, 3,4];
Array(
  [0] => 1
  [1] => 2
  [2] => 3
  [3] => 4
)

$list3 = $list1 + $list2;
Array(
  [0] => 1
  [1] => 3
  [2] => 5
  [3] => 4
)
第一é…列ã«ç„¡ã„è¦ç´ ãŒè¿½åŠ è¿½åŠ ã•れる


ã€ã€Œ+ã€ã«ã‚ˆã‚‹é€£æƒ³é…列連çµã€‘ $list1 = [
 'A1' => 'A1',
 'A3' => 'A3',
 'A5' => 'A5',
];
$list2 = [
 'A1' => 'A1',
 'A2' => 'A2',
 'A3' => 'A3',
];

$list3 = $list1 + $list2;
Array(
  [A1] => A1
  [A3] => A3
  [A5] => A5
  [A2] => A2
)
第一é…列ã«ç„¡ã„è¦ç´ ãŒè¿½åŠ ã•れる


ã€ã€Œarray_mergeã€ã«ã‚ˆã‚‹é€šå¸¸é…列連çµã€‘ $list1 = [1, 3, 5];
Array(
  [0] => 1
  [1] => 3
  [2] => 5
)

$list2 = [1, 2, 3,4];
Array(
  [0] => 1
  [1] => 2
  [2] => 3
  [3] => 4
)

$list3 = array_merge($list1, $list2);
Array(
  [0] => 1
  [1] => 3
  [2] => 5
  [3] => 1
  [4] => 2
  [5] => 3
  [6] => 4
)
インデックス番å·ãŒé‡è¤‡ã™ã‚‹å ´åˆã¯å¾Œã‚ã«è¿½åŠ ã•れる
第一é…列ã«ç„¡ã„è¦ç´ ã‚‚追加ã•れる


ã€ã€Œarray_mergeã€ã«ã‚ˆã‚‹é€£æƒ³é…列連çµã€‘ $list1 = [
 'A1' => 'A1-1',
 'A3' => 'A3-1',
 'A5' => 'A5-1',
];

$list2 = [
 'A1' => 'A1-2',
 'A2' => 'A2-2',
 'A3' => 'A3-2',
];

$list3 = array_merge($list1, $list2);
Array(
  [A1] => A1-2
  [A3] => A3-2
  [A5] => A5-1
  [A2] => A2-2
)
キーãŒé‡è¤‡ã™ã‚‹å ´åˆã¯ç¬¬äºŒé…列ãŒå„ªå…ˆã•れる
第一é…列ã«ç„¡ã„è¦ç´ ã‚‚追加ã•れる


ã€ã€Œarray_merge_recursiveã€ã«ã‚ˆã‚‹é€£æƒ³é…列連çµã€‘ $list1 = [
 'A1' => 'A1-1',
 'A3' => 'A3-1',
 'A5' => 'A5-1',
];

$list2 = [
 'A1' => 'A1-2',
 'A2' => 'A2-2',
 'A3' => 'A3-2',
];

$list3 = array_merge_recursive($list1, $list2);
Array(
  [A1] => Array
    (
      [0] => A1-1
      [1] => A1-2
    )
  [A3] => Array
    (
      [0] => A3-1
      [1] => A3-2
    )
  [A5] => A5-1
  [A2] => A2-2
)
キーãŒé‡è¤‡ã—ãŸå ´åˆã€å­é…列ãŒç”Ÿæˆã•れる

タプルã¯ã‚¤ãƒŸãƒ¥ãƒ¼ã‚¿ãƒ–ル(æ›´æ–°ä¸å¯)
リスト化&追加&タプル化ã¯å¯èƒ½
var ary1 = ['c', 'b', 'a'];
var ary2 = ['1', '2', '3'];
末尾ã«çµåˆ
var ary3 = ary1.concat(ary2);
→['c', 'b', 'a', '1', '2', '3']

ç½®æ›

array_splice(æ“作対象é…列, æ“作開始ä½ç½®, ç½®æ›è¦ç´ æ•°, ç½®æ›å¯¾è±¡é…列)

$list = [
 'A',
 'B',
 'C',
];
array_splice($list, 0, 2, ['D1', 'D2', 'D3']);
$listã®1番目ã®è¦ç´ ã‹ã‚‰2è¦ç´ ã‚’['D1', 'D2', 'D3']ã§ç½®æ›
→
$list = [
 'D1',
 'D2',
 'D3',
 'B',
 'C',
];


$list = [
 'A',
 'B',
 'C',
];
array_splice($list, -2, 2, ['D1', 'D2', 'D3']);
$listã®2番目(-2)ã®è¦ç´ ã‹ã‚‰2è¦ç´ ã‚’['D1', 'D2', 'D3']ã§ç½®æ›
→
$list = [
 'A',
 'D1',
 'D2',
 'D3',
];

切りå–り

$list1 = ['A', 'B', 'C'];
Array(
  [0] => A
  [1] => B
  [2] => C
)
$list2 = array_slice($list1, 1, 2, false);
→
Array(
  [0] => B
  [1] => C
)
å…ƒã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ç•ªå·ã¯ç¶­æŒã•れãªã„
インデックス番å·ãŒ0ã‹ã‚‰é™ã‚Šç›´ã•れる

$list1 = ['A', 'B', 'C'];
Array(
  [0] => A
  [1] => B
  [2] => C
)
$list2 = array_slice($list1, 1, 2, true);
→
Array(
  [1] => B
  [2] => C
)
å…ƒã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ç•ªå·ã¯ç¶­æŒã•れる

タプルã¯ã‚¤ãƒŸãƒ¥ãƒ¼ã‚¿ãƒ–ル(æ›´æ–°ä¸å¯)
リスト化&追加&タプル化ã¯å¯èƒ½

検索

int[] ary = {1, 1, 2, 3, 3, 5};

int found = Arrays.binarySearch(ary, 1);
0

int found = Arrays.binarySearch(ary, 2);
2

int found = Arrays.binarySearch(ary, 3);
4

実行å‰ã«ã‚½ãƒ¼ãƒˆãŒå¿…è¦
0ã‹ã‚‰æ•°ãˆã¦ä½•番目ã‹ï¼Ÿã‚’å–å¾—
複数発見ã•れる場åˆã€å…ˆé ­ã‚’å–å¾—
$list = [
 'PHP',
 'Java',
 'JavaScript',
 'PHP',
];

$ret = array_search('Java', $list);
→1
先頭ã®è¦ç´ ç•ªå·ãŒå–å¾—ã•れる
$ret = array_search('C#', $list);
→false

制御文ã§ä½¿ç”¨ã™ã‚‹å ´åˆ
if (array_search('Java', $list)===false){
 ~
}


$list = [
 'PHP',
 'Java',
 'JavaScript',
 'PHP',
];
$ret = in_array('Java', $list);
→true
$ret = in_array('Ruby', $list);
→false

制御文ã§ä½¿ç”¨ã™ã‚‹å ´åˆ
if (in_array('Java', $list)){
 ~
}

ary = ('elephant', 'dog', 'cat')

インデックス番å·(0ã‹ã‚‰)
print(ary.index('elephant')) # 0

ret = 'cat' in ary
print(ret)
# True

ret = 'bird' in ary
print(ret)
# False

ret = 'cat' not in ary
print(ret)
# False

ret = 'bird' not in ary
print(ret)
# True

# è¦ç´ ç•ªå·
index = ary.index('cat')
print(index)
# 2

index = ary.index('elephant')
print(index)
# 0

index = ary.index('bird')
print(index)
# エラー

特殊ãªé…列


多次元é…列

int[,] ary = new int[2, 2];
ary[0, 0] = 1;
ary[0, 1] = 2;
ary[1, 0] = 3;
ary[1, 1] = 4;

int[,] ary = new int[,]
{
  { 1, 2 },
  { 3, 4 }
};

foreach (int elm in ary)
{
  Console.WriteLine(elm);
}
int[][] ary = new int[][]{1,2,3,4}
int[][] ary = {1,2,3,4}
int ary[][] = {1,2,3,4}

C#ã«ãŠã‘ã‚‹ã€int[,] ary ~ ã®æ§‹æ–‡ã¯ç„¡ã„。
(多次元é…列ã¨ã‚¸ãƒ£ã‚°é…列ã®å®£è¨€ã®é•ã„ç„¡ã—)
通常
ary = ((1,2,3), (4,5,6))
print(ary)
# ((1 2 3) (4 5 6))

2ã¤ç›®ã®é…列ã®1ã¤ç›®ã®è¦ç´ ã‚’指定
print(ary[1][0]) #4
タプルã§ã‚‚ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã®æŒ‡å®šã¯[]を用ã„ã‚‹

ジャグé…列

è¦ç´ ãŒé…列ã§ã‚ã‚‹é…列
é…列ã®è¦ç´ ã¨ã—ã¦é…列を格ç´ã™ã‚‹ç‚ºã«ã¯é…列インスタンスを作æˆã™ã‚‹å¿…è¦ãŒã‚る。

int[][] ary = new int[3][];
ary[0] = new int[] { 1, 2, 3 };
ary[1] = new int[] { 1, 2 };
ary[2] = new int[] { 1, 2, 3, 4, 5 };

int[][] ary = new int[3][]
{
  new int[] { 1, 2, 3 },
  new int[] { 1, 2 },
  new int[] { 1, 2, 3, 4, 5 }
};

foreach (int[] elms in ary)
{
  foreach (int elm in elms)
  {
    Console.WriteLine(elms);
  }
}
é…列ã®è¦ç´ ã¨ã—ã¦é…列を格ç´ã™ã‚‹ç‚ºã«ã€é…列インスタンスを作æˆã™ã‚‹å¿…è¦ç„¡ã—(自動)

int[][] array = new int[2][2];
array[0][0] = 5;
array[0][1] = 5;
array[1][0] = 5;
array[1][1] = 5;
array[2][0] = 5; ⇒ 実行時エラー

宣言ã¨åŒæ™‚ã«è¦ç´ ã‚’設定
int[][] array = new int[][]
{
  {5,5},
  {5,5}
};

2次元目ã®è¦ç´ æ•°ã‚’定ã‚ãšã«å®£è¨€
int[][] array = new int[2][];
array[0] = new int[]{5,5};
array[1] = new int[]{5,5,5};
array[2] = new int[]{5,5,5,5}; ⇒ 実行時エラー
my @elm1 = ("row1-col1", "row1-col2", "row1-col3");
my @elm2 = ("row2-col1", "row2-col2", "row2-col3");
my @table = (@elm1, @elm2);
print $table[0][0] #エラー

#é…列ã®ãƒªãƒ•ァレンスå–å¾—
my $ref1 = ["row1-col1", "row1-col2", "row1-col3"];
my $ref2 = ["row2-col1", "row2-col2", "row2-col3"];
my @table = ($ref1, $ref2);
print $table[0][0] # ⇒ "row1-col1"


#連想é…列ã®ä¸­ã«é…列を入れる

my $elm1 = {
 name => 'yone',
 age => 36,
};
my @family = ('wife', 'child1', 'child2');
my $elm2 = {
 #é…列を作æˆã¨åŒæ™‚ã«ã®ãƒªãƒ•ァレンスを格ç´
 food => ['niku', 'sushi'],
 sports => 'basket',
 #é…列ã®ãƒªãƒ•ァレンスを格ç´
 family => \\@family,
};
my %table = (
 elm1 => $elm1,
 elm2 => $elm2
);

print Dumper %table,"\\n";

⇒
$VAR1 = 'elm2';
$VAR2 = {
 'sports' => 'basket',
 'family' => [
  'wife',
  'child1',
  'child2'
   ],
 'food' => [
   'niku',
   'sushi'
  ]
};
$VAR3 = 'elm1';
$VAR4 = {
 'name' => 'yone',
 'age' => 36
};



ãƒã‚¤ãƒ³ã‚¿(リファレンス/デリファレンス)を使用ã—ãŸé…列ã®åˆ©ç”¨ã«ã¤ã„ã¦ã¯ã€Œãƒ—ログラム言語 ãƒã‚¤ãƒ³ã‚¿ / é…列ã®ãƒã‚¤ãƒ³ã‚¿ã€å‚ç…§

Follow me!