ホームページ >バックエンド開発 >PHPチュートリアル >配列のキー/値操作関数、配列関数_PHP チュートリアル
PHPでは、配列の各要素はキー/値で構成されており、要素のキーを通じて対応するキーの値にアクセスします。 「連想配列」とは文字列のキー名を持つ配列を指し、「インデックス」と「キー名」は同じものを指します。 "index" 多指数配列の数値添え字。配列処理関数を使用すると、配列内の各要素のキーと値を簡単に操作して、新しい配列を生成できます。
①関数array_values()
array_values() 関数は、配列内のすべての要素の値を返します。使い方は非常に簡単です。必須パラメータは 1 つだけで、指定された配列が渡され、指定された配列内のすべての値を含む配列が返されることを指定します。ただし、キー名は保持されず、返された配列は、0 から始まり 1 ずつ増加する連続した数値キーを使用して再インデックスされます。これは、配列内にカオス要素を含む配列に適しているか、または連想配列をインデックス付き配列に変換できます。コードは次のようになります:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php
$contact = array (
"ID" => 1,
"姓名" => "高某" ,
"公司" => "A公司" ,
"地址" => "北京市" ,
"电话" => "(010)98765432"
);
//array_values()函数传入数组$contact 重新索引返回一个新数组
print_r( array_values ( $contact ));
print_r( $contact ); //原数组$contact内容元素不变
?>
|
プログラムを実行した結果は次のとおりです:
Array([0]=>1 [1]=>Gao[2]=>Company A[3]=>Beijing City[4]= > ;(010)98765432)
Array([ID]=>1 [名前]=>高 [会社]=>A社 [住所]=>北京 [電話]=>( 010)98765432 )
②関数array_keys()
array_keys() 関数は、配列内のすべてのキー名を返します。この関数には 1 つの必須パラメーターと 2 つのオプションのパラメーターがあります。その関数のプロトタイプは次のとおりです。
array array_keys(array input[,mixed search_value[,bool strict]]) オプションのパラメータ search_value が指定されている場合は、指定された値のキー名のみが返されます。それ以外の場合は、入力配列内のすべてのキー名が返されます。戻ってきた。 PHP5 以降では、strict パラメーターを使用して一致比較を実行できます。ブール値を渡す必要があります。FALSE がデフォルト値であり、タイプには依存しません。 TRUE 値が渡された場合、型に応じて、指定された値を持つキー名が返されます。関数 array_keys() で使用されるコードは次のとおりです:
<?php
$lamp = array ( "a" => "Linux" , "b" => "Apache" , "c" => "MySQL" , "d" => "php" );
print_r( array_keys ( $lamp )); //输出Array([0]=>a [1]=>b [2]=>c)
print_r( array_keys ( $lamp , "Apache" )); //使用第二个可选参数输出:Array([0]=>b)
$a = array (10,20,30, "10" ); //声明一个数组,其中元素的值有整数10和字符串"10"
print_r( array_keys ( $a , "10" ,false)); //使用第三个参数(false)输出:Array([0]=>0 [1]=>3)
$a = array (10,20,30, "10" ); //声明一个数组,其中元素的值有整数10和字符串"10"
print_r( array_keys ( $a , "10" ,true)); //使用第三个参数(true)输出:Array([0]=>3)
?>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php
//in_array()函数的简单使用形式
$os = array ( "Mac" , "NT" , "Trix" , "Linux" );
if (in_array( "Trix" , $os )){ //这个条件成立,字符串Trix在数组$os中
echo "Got Trix" ;
}
if (in_array( "mac" , $os )){ //这个条件失败,因为in_array()是区分大小写的
echo "Got mac" ;
}
//in_array严格类型检查例子
$a = array ( '1.10' ,12.4,1.13);
//第三个参数为true,所以字符串'12.4'和浮点数12.4类型不同
if (in_array( '12.4' , $a ,true)){
echo "'12.4' found with strict checkn" ;
}
if (in_array(1.13, $a ,true)){ //这个条件成立,执行下面的语句
echo "1.13 found with strict checkn" ;
}
<code class="php spaces"> //in_array()中还可以用数组当做第一个参数作为查询条件 //in_array() では、数组当做第一パラメータを查询条件として使用できます<code class="php spaces"> $a = array ( array ( 'p' , 'h' ), array ( 'p' , 'r' ), 'o' );
<code class="php spaces"> if (in_array( array ( 'p' , 'h' ), $a )){ //数组array('p','h')在数组$a中存在 $a<code class="php spaces"> echo "'ph'was foundn" ; = <code class="php spaces"> } array<code class="php spaces"> if (in_array( array ( 'h' , 'p' ), $a )){ //数组array('h','p')在数组$a中不存在 (<code class="php spaces"> echo "'hp'was foundn" ; array<code class="php spaces"> } ( |
array🎜(🎜'p'🎜,🎜'r'🎜),🎜'o'🎜);🎜
🎜if🎜(in_array(🎜array🎜(🎜'p'🎜,🎜'h'🎜),🎜$a🎜)){ 🎜//数组array('p','h ')数組$a中に存在します🎜
🎜echo🎜 "'ph' が見つかりました"🎜;🎜
🎜}🎜
🎜if🎜(in_array(🎜array🎜(🎜'h'🎜,🎜'p'🎜),🎜$a🎜)){ 🎜//数组array('h','p ')数組$a中には存在しません🎜
🎜echo🎜 "'hp' was foundn"🎜;🎜
🎜}🎜
?>🎜
🎜
🎜
🎜
🎜array_search() 関数を使用して検索することもできます。この関数は in_array() と同じパラメータを持ち、指定された値を検索し、存在する場合は対応するキー名を返します。また、データ型の厳密な判定もサポートしています。関数 array_search() で使用されるコードは次のとおりです:
1
2
3
4
5
6
7
<?php
$lamp
=
array
(
"a"
=>
"Linux"
,
"b"
=>
"Apache"
,
"c"
=>
"MySQL"
,
"d"
=>
"php"
);
echo
array_search
(
"php"
,
$lamp
);
//输出:d(在数组$lamp中,存在字符串"php"则输出下标d)
$a
=
array
(
"a"
=>
"8"
,
"b"
=>8,
"c"
=>
"8"
);
echo
array_search
(8,
$a
,ture);
//输出b(严格按类型检索,整型8对应的下标b)
?>
さらに、array_key_exists() 関数を使用すると、指定されたキー名またはインデックスが配列内に存在するかどうかを確認することもできます。キー名は配列内で一意である必要があるため、データ型を判断する必要はありません。 isset() 関数を使用して配列内のキー名を確認することもできます。単一の isset() は配列内の NULL 値に対して TRUE を返しませんが、array_key_exists() は返します。コードは次のようになります:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$search_array
=
array
(
'first'
=>1,
'second'
=>4);
//声明一个关联数组,其中包含两个元素
if
(
array_key_exists
(
'first'
,
$search_arry
)){
//检查下标为first对应的元素是否在数组中
echo
"键名为'first'的元素在数组中"
;
}
$search_array
=
array
(
'first'
=> null,
'second'
=>4);
//声明一个关联数组,第二个元素的值为NULL
isset(
$search_array
[
'first'
]);
//用isset()检索下标为first的元素返回false
array_key_exists
(
'first'
,
$search_array
);
//用array_key_exists()检索下标为first的元素返回true
?>
④関数array_flip()
array_flip() は配列内のキーと値を交換するために使用されます。同じ値が複数回出現する場合、最後のキー名が値として使用され、前の要素が上書きされます。元の配列の値のデータ型が文字列または整数ではない場合、関数はエラーを報告します。この関数にはパラメータが 1 つだけあり、その関数プロトタイプは次のとおりです:
配列 array_flip(trans)
パラメータは必須です。処理する配列を入力する必要があり、配列内の各要素のキーと値を交換した配列を返します。関数 array_flip() で使用されるコードは次のとおりです:
1
2
3
4
5
6
7
8
9
10
<?php
$lamp
=
array
(
"os"
=>
"linux"
,
"WebServer"
=>
"Apache"
,
"Database"
=>
"MySQL"
,
"Language"
=>
"PHP"
);
//输出:Array([linux]=>os [Apache]=>WebServer [MySQL]=>Database [PHP]=Language);
print_r(
array_flip
(
$lamp
));
//使用array_flip()函数交换数组中的键和值
//在数组中如果元素的值相同,则使用array_flip()会发生冲突
$trans
=
array
(
"a"
=>1,
"b"
=>1,
"c"
=2);
print_r(
array_flip
(
$trans
));
//现在$trans变成了:Array([1]=> b [2]=> c)
?>
⑤関数array_reverse()
array_reverse() は、元の配列の要素の順序を逆にし、新しい配列を作成して返します。この関数には 2 つのパラメーターがあり、その関数プロトタイプは次のとおりです:
array array_reverse(array array[,bool prepare_keys])
最初のパラメータは必須であり、入力として配列を受け取ります。 2 番目のパラメータはオプションです。TRUE を指定すると、要素のキー名は変更されません。それ以外の場合、キー名は失われます。関数 array_reverse() で使用されるコードは次のとおりです:
1
2
3
4
5
6
7
<?php
$lamp
=
array
(
"OS"
=>
"Linux"
,
"WebServer"
=>
"Apache"
,
"Database"
=>
"MySQL"
,
"Language"
=>
"PHP"
);
//使用array_reverse()函数将数组$lamp中的元素的顺序翻转
print_r(
array_reverse
(
$lamp
));
//输出的结果Array([Language]=>PHP [Database]=>MySQL [WebServer]=>Apache [OS]=>Linux)
?>
>> この記事への固定リンク: http://php.ncong.com/php_course/arry_function/key-value.html
#include
int CompactIntegers(int a[], int *m)
{
int i,j,n;//ここでは C コンパイラを使用したので修正しました
/ / C++ であれば、参照転送を直接使用できるはずです。最初に書いた内容によれば、メインプログラムで n の値を変更できるはずです
n=*m;
for(i=0; i {
if(a [i]==0)
{
for(j=i;j a[j]=a[j+1];
n- -;
}
}
*m=n;
return j;
}
void main()
{
int i,n,a[100];
printf("番号を入力してください:\n");
scanf("%d",&n);
for(i=0;i {
printf("%d の数値を入力してください:",i+1);
scanf("%d ",&(a[i]));
}
CompactIntegers(a,&n);
for(i=0;i {
printf("%d の数値は: %d\n ",i+1, a[i]);
}
}
コードはどうなっているのでしょうか? 配列にはもともと重複した値がありますか?
http://www.bkjia.com/PHPjc/860919.html