<!-- PHP數組與數據結構 -->
<?php
// // $arr = array('歡迎',10 => '學習',
// // 'php',
// // 19 => '語言','相信自己一定能學會'
// // );
// // $arr = array('劉亦菲',
// // 'anglebaby','鹿晗','範彬彬'
// // );
// $arr[0] = '北京';
// $arr[1] = '上海';
// $arr[2] = '廣州';
// $arr = array('0' => '小明',
// '1' => '小龍',
// '2' => '小花',
// '3' => '小蘭'
// );
// $arr = [
// ['南寧','崇左','憑祥','桂林','百色'],
// ['龍州','武鳴','寧明','大興','蘋果']
// ];
// $arr = array(
// array('南寧','崇左','憑祥','桂林','百色'),
// array('龍州','武鳴','寧明','大興','蘋果')
// );
// echo '<pre>';
// echo count($arr);die;
// var_dump($arr[2]);
// echo '</pre>';
?>
<?php
$num = array('南寧','崇左','憑祥','桂林','百色');
for ($i = 0;$i < count($num);$i++){
echo $num[$i].'<br />';
}
unset($num[1]);
var_dump($num);
$name = array(
'name1' => '芙蓉',
'name2' => '鳳姐'
);
foreach ($name as $key => $value){
echo $key.'——————'.$value.'<br />';
}
$city = array(
0 => array(
'南寧' => 'nanning',
'百色' => 'baise',
'憑祥' => 'pingxing'
),
1 => array(
'廣州' => 'guangzou',
'深圳' => 'shengzheng',
'東莞' => 'dongguan'
)
);
foreach ($city as $value){
foreach ($value as $k => $v){
echo $k.'—'.$v.'<br />';
}
}
list($one,$two,$three) = array('張三','李四','王五');
echo '$one----'.$one.'<br />';
echo '$two----'.$two.'<br />';
echo '$three--'.$three.'<br />';
$kongjie = [
'gao' => '黑絲',
'lian' => '很白',
'tui' => '很細',
'wuguan' => '精緻',
'shengyin' => '甜美',
];
$date = each($kongjie);
echo '<pre>';
var_dump($date);
echo '<pre>';
list($one,$two) = each($kongjie);
echo $one.'-'.$two.'<br />';
$minggren = array("鄧超","黃曉明","濘澤濤","鍾漢良");
$dc = array_shift($minggren);//刪除數組開頭第一個單元
array_unshift($array, $value1);//數組開頭插入一個或多個單元
array_push($array, $value1);//將一個或多個單元壓入數組末尾
array_pop($array);//刪除數組末尾單元,並長度減一
current($array);//返回數組中的當前單元
key($array);//從關聯數組中取得鍵名
next($array);//將數組中的內部指針向前(數組的下一個元素)移動一位
prev($array);//將數組的內部指針倒回一位(從當前位置指向上一個元素)
reset($array);//返回數組中第一個元素位置
end($array);//指向數組最後一個元素位置
print_r($minggren);//打印出函數結構
//php數組常用函數
array_combine($keys, $values);//創建一個數組,用一個數組的值作爲其鍵名,另一個數組的值作爲其值
range($start, $end);//根據範圍創建數組,包含指定的元素
compact($varname1);//建立一個數組,包括變量名和它們的值
array_fill($start_index, $num, $value);//用給定的值填充數組
array_chunk($array, $size);//將一個數組分割成多個
array_merge($array1);//合併一個或多個數組
array_slice($array, $offset, $length, $preserve_keys);//從數組中取出一段
array_diff($array1, $array2);//計算數組的差集
array_search($needle, $haystack);//在數組中搜索給定的值,如果成功則返回首個相應的鍵名
array_splice($input, $offset ,$length, $replacement);//去掉數組中的某一部分並用其它值取代
array_sum($array);//對數組中所有值求和
in_array($needle, $haystack);//檢查數組中是否存在某個值
array_key_exists($key, $array);//檢查數組裏是否有指定的鍵名或索引
shuffle($array);//打亂數組
count($array_or_countable);//數組長度
array_flip($array);//交換數組中的鍵和值
array_keys($array);//返回數組中部分的或所有的鍵名
array_values($array);//返回數組中所有的值
array_reverse($array);//返回單元順序相反的數組
array_count_values($array);//統計數組中所有的值
array_rand($array);//從數組中隨機取出一個或多個單元
array_unique($array);//移除數組中重複的值
sort($array);//對數組排序(從低到高)
rsort($array);//對數組逆向排序(從高到低)
asort($array);//對數組進行排序並保持索引關係(按字母順序)
arsort($array);//對數組進行逆向排序並保持索引關係
ksort($array);//對數組按照鍵名排序(按字母順序)
krsort($array);//對數組按照鍵名逆向排序
natsort($array);//用"自然排序"算法對數組排序
natcasesort($array);//用"自然排序"算法對數組進行不區分大小寫字母的排序
array_filter($array);//用回調函數過濾數組中的單元
extract($array, $flags, $prefix);//從數組中將變量導入到當前的符號表
?>
<!-- 數組練習題 -->
<?php
// 1.將數組的鍵名全部轉換成小寫和大寫的函數是什麼?
// 答:array_change_key_case($array [,CASE_LOWER|CASE_UPPER])
// 2.創建一個數組,用一個數組的值作爲其鍵名,另一個數組的值作爲其值的函數是什麼?
// 答:array array_combine ( array $keys , array $values )
// 3.統計數組中所有的值出現的次數的函數是什麼?
// 答:array array_count_values ( array $input )
// 4.返回數組中部分的或所有的鍵名的函數是什麼?
// 答:array array_key($array [,$search_value [,true|false]])
// 5.將回調函數作用到給定數組的單元上的函數是什麼?
// 答:array array_map ( callable $callback , array $arr1 [, array $... ] )
// 6.合併一個或多個數組的函數是什麼?
// 答:array array_merge ( array $array1 [, array $... ] )
// 7.將數組最後一個元素彈出的函數是什麼?
// 答:mixed array_pop ( array &$array )
// 8.將一個或多個單元壓入數組的末尾(入棧)的函數是什麼?
// 答:int array_push ( array &$array , mixed $var [, mixed $... ] )
// 9.從數組中隨機取出一個或多個單元的函數是什麼?
// 答:mixed array_rand ( array $input [, int $num_req = 1 ] )
// 10.返回一個單元順序相反的數組的函數是什麼?
// 答:array array_reverse ( array $array [, bool $preserve_keys = false ] )
// 11.在數組中搜索給定的值,如果成功則返回相應的鍵名的函數是什麼?
// 答:array_search ( mixed $needle , array $haystack [,$strict = false ] )
// 12.將數組開頭的單元移出數組的函數是什麼?
// 答:mixed array_shift ( array &$array )
// 13.移除數組中重複的值的函數是什麼?
// 答:array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )
// 14.在數組開頭插入一個或多個單元的函數是什麼?
// 答:int array_unshift ( array &$array , mixed $var [, mixed $... ] )
// 15.返回數組中所有的值的函數是什麼?
// 答:array array_values ( array $input )
// 16.對數組進行逆向排序並保持索引關係的函數是什麼?
// 答:bool arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
// 17.對數組進行正向排序並保持索引關係的函數是射門?
// 答:bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
// 18.返回數組中當前的鍵/值對並將數組指針向前移動一步的函數是什麼?
// 答:array each ( array &$array ),例如:while(list($key,$value)=each($array)){}
// 19.對數組按照鍵名逆向排序的函數是什麼?
// 答:bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
// 20.對數組按照鍵名正向排序的函數是什麼?
// 答:bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
// 21. 對數組逆向排序的函數是什麼?
// 答:bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
// 22.對數組正向排序的函數是什麼?
// 答:bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
// 23.將數組打亂的函數是什麼?
// 答:bool shuffle ( array &$array )
// 24.count() 的別名函數是什麼?
// 答:sizeof()
// 25.將變量轉換成數組的函數是什麼?
// 答:compact();例如:$user='zong';$pwd=123;compact('user','pwd')結果爲array('user'=>'zong','pwd'=>123)
//26.寫函數創建長度爲10的數組,數組中的元素爲遞增的奇數,首項爲1
function arrsort($first,$length){
$arr = array();
for ($i=0;$i<=$length;$i++){
$arr[] = $i*2-1;
}
return $arr;
}
$arr1 = arrsort(1, 10);
var_dump($arr1);
//27.創建長度爲10的數組,數組中的數爲遞增的等比數,比值爲3,首項爲1
function arrsort1($first,$length,$num){
for ($i=$first;$i<=$length;$i++){
$arr[] = $num*pow($num, $i-2);
}
return $arr;
}
$arr1 = arrsort1(1, 10,3);
var_dump($arr1);
//28.求數組中最大數的下標
function maxkey($arr){
$maxval = max($arr);
foreach ($arr as $key=>$val){
if ($maxval == $val){
$maxkey = $key;
}
}
return $maxkey;
}
$arr = array(0,-1,-2,5,"b"=>15,3);
echo maxkey($arr);
//29.創建一個長度爲10的數組,數組中的元素滿足斐波那契數列的規律
function arrFibo($len){
$arr[0] = 0;
$arr[1] = 1;
for ($i=2;$i<$len;$i++){
$arr[$i] = $arr[$i-1]+$arr[$i-2];
}
return $arr;
}
echo "<pre>";
print_r(arrFibo(10));
echo "</pre>";
//30.計算數組中最大數和最小數的差
// max/min
function arrsub($arr){
sort($arr);
$min = $arr[0];
rsort($arr);
$max = $arr[0];
$sub = $max - $min;
return $sub;
}
$arr = array(-1,-2,100);
echo arrsub($arr);
//31.寫一個方法,將一個長度超過10的數組最後5項直接截取,不改變順序變爲前5項,
//如{1,2,3,4,5,6,7,8,9,10}變爲{6,7,8,9,10,1,2,3,4,5}.
function arrsort2($arr){
$num = count($arr);
if ($num > 10) {
$arr_firstpart = array_slice($arr, 0,$num-5,true);
$arr_lastpart = array_slice($arr, ($num-5),5,true);
}else {
echo "數組不超過10個元素,請重新輸入";
exit;
}
$arr_new = array_merge($arr_firstpart,$arr_lastpart);
return $arr_new;
}
$arr = array("a" => 1,2,3,8,9,6,"b"=>5,-1,"c"=>8,0,7);
echo "<pre>";
print_r($arr);
echo "<br>= = = = = 拼接後 = = = =<br><br>";
print_r(arrsort2($arr));
echo "</pre>";
//32.將兩個數組連接成一個新數組
$arr = array("a"=>1,"b"=>2,3);
$arr2 = array("a"=>Dee,3,5);
$arr3 = array_merge($arr,$arr2);
$arr4 = array_merge_recursive($arr,$arr2);
echo "<pre>";
print_r($arr3);
echo "<br>= = = = =<br><br>";
print_r($arr4);
echo "</pre>";
//32.1第一個輸出的數組中索引爲"a"的值1被第二個數組中索引爲"a"的值Dee覆蓋了
function arrsort3($arr1,$arr2){
$arr_new = $arr1;
foreach ($arr2 as $key=>$val){
$arr_new[] = $val;
}
return $arr_new;
}
$arr1 = array("a"=>1,"b"=>2,3);
$arr2 = array("a"=>Dee,"c"=>3,5);
echo "<pre>";
print_r(arrsort3($arr1,$arr2));
echo "</pre>";
//33.數組的逆序(不能使用rsort函數,不能生成新數組)
$arr = array("a","b","c",1,10);
$i="";
$j="";
$k="";
$len = count($arr);
$half_len = floor($len/2);
for ($i=0;$i<$half_len;$i++){
$j=$arr[$i];
if ($len%2!=0) {
$k = $half_len*2-$i;
}else {
$k = $half_len*2-$i-1;
}
$arr[$i]=$arr[$k];
$arr[$k]=$j;
}
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
php基礎一(數組)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.