PHP 数组处理

一:PHP 定义数组:

直接定义关联数组

$capitals = array(  
  'Alabama' => 'Montgomery',  
  'Alaska'  => 'Juneau',  
  'Arizona' => 'Phoenix'  
); 

  

PHP 代码  不能再 空的位置 打字  会报错

定义数组  方式1

$cars=array("Volvo","BMW","Toyota");

定义数组方式2

$cars['ke']="Volvo";
 $cars["kq"]="BMW";
 $cars["kw"]="Toyota"; 

结果:

定义数组方式3(默认数字索引)

$cars[]="Volvo";
 $cars[]="BMW";
 $cars[]="Toyota"; 

 结果:

二:PHP数组与字符串之间的转化:

1:字符串转化为数组:

<?php 
$str = 'one|two|three|four'; 
// 正数的 limit 
print_r(explode('|', $str, 2)); 
// 负数的 limit 
print_r(explode('|', $str, -1)); 
//不使用limit
print_r(explode('|', $str)); 
?> 

  结果:

2:数组转化为字符串:

<?php
$arr1=array(“shu”,”zhu”,”1″);
$c=implode(“##”,$arr1);
echo $c;  
?>

 结果:    shu##zhu##1  

3: 数组 转化为字符串  可以使用  遍历集合  然后拼接字符串

三: PHP   数组与JSON 数组的转化:转化为的JSON值 以字符串的形式存在

普通数组转化为JSON 数组

$arr = Array('one','two', 'three');
 
echo json_encode($arr);

 输出

["one","two","three"]// string 格式

输出的JSON 为 字符串  格式   如下

$arr = array('one','two', 'three');
 
var_dump(json_encode((object)$arr));

 结果:

 

 

 

关联数组

$arr = Array('1'=>'one','2'=>'two','3'=>'three');
 
echo json_encode($arr);
 输出变为


{"1":"one","2":"two","3":"three"}

注意,数据格式从"[]"(数组)变成了"{}"(对象)。

 如果你需要将"索引数组"强制转化成"对象",可以这样写

json_encode( (object)$arr); 

 或者

json_encode ( $arr, JSON_FORCE_OBJECT );

 

JSON数组转化为普通数组

 json_decode()

通常情况下,json_decode()总是返回一个PHP对象,而不是数组。比如:


$json ='{"a":1,"b":2,"c":3,"d":4,"e":5}';
 
var_dump(json_decode($json));
结果就是生成一个PHP对象:


object(stdClass)#1 (5) {
 
  ["a"] => int(1)
  ["b"] => int(2)
  ["c"] => int(3)
  ["d"] => int(4)
  ["e"] => int(5)
 
}

 如果想要强制生成PHP关联数组,json_decode()需要加一个参数true:


$json ='{"a":1,"b":2,"c":3,"d":4,"e":5}';
  
var_dump(json_decode($json,true));
 结果就生成了一个关联数组:


array(5) {
 
   ["a"] => int(1)
   ["b"] => int(2)
   ["c"] => int(3)
   ["d"] => int(4)
   ["e"] => int(5)
}

 

下面三种json写法都是错的,你能看出错在哪里吗?五、json_decode()的常见错误

 

$bad_json ="{ 'bar': 'baz' }";
 
$bad_json ='{ bar: "baz" }';
 
$bad_json ='{ "bar": "baz", }';


第一个的错误是,json的分隔符(delimiter)只允许使用双引号,不能使用单引号。第二个的错误是,json名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号。第三个的错误是,最后一个值之后不能添加逗号(trailing comma)。 对这三个字符串执行json_decode()都将返回null,并且报错。 

 

 

四:PHP 处理数组:

1.str_replace()  可以替换 数组中的指定 值   返回一个新的数组(修正后的数组)

$arr = array("blue","red","green","yellow");
print_r(str_replace("red","pink",$arr));

 结果:

2.array_keys()                              数组中找到 指定 value值 的 key 值

$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_keys($a,"Highlander"));

结果:

3. array_map()                    数组中的每个值都运行指定函数 并且返回  新的数组。

<?php
function myfunction($v)
{
if ($v==="Dog")
  {
  return "Fido";
  }
return $v;
}

$a=array("Horse","Dog","Cat");
print_r(array_map("myfunction",$a));
?>

  结果:

4.array_pop($a); 这里 注意  : 原来的 数组 已经改变      删除数组最后的 一位 

<?php
$a=array("red","green","blue");
array_pop($a);
print_r($a);
?>

  结果:

 array_push()添加数组最后一位

<?php
$a=array("red","green");
array_push($a,"blue","yellow");
print_r($a);
?>

 结果:

5. array_shift($a); 开头  删除

<?php
$a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_shift($a);
print_r ($a);
?>

 结果: 

array_unshift($a); 开头 添加

<?php
$a=array("a"=>"red","b"=>"green");
array_unshift($a,"blue");
print_r($a);
?>

  结果:

6.输出 key  和 value 值

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>

7.修改  数组值    【foreach 不能 直接修改 数组的值; 如果便利的话 只能使用  for 循环】 

注意加引号

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>

8.PHP数组 去重

<?php
$a=array("a"=>"red","b"=>"green","c"=>"red");
print_r(array_unique($a));
?>

9. 某个值是否存在某个 值

<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland");

if (in_array("Glenn", $people))
{
echo "Match found";
}
else
{
echo "Match not found";
}
?>

10.合并数组    array_merge()  只可以合并数组类型的参数  不过可以使用强制转换 来合并  字符串和数组

<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>

 结果:

  把字符串和数组 合并

<?php
$beginning = 'foo';
$end = array(1 => 'bar');
$result = array_merge((array)$beginning, (array)$end);
print_r($result);
?>

 输出:

 

 

 

  

  

  

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2017-02-12 11:14  get("新技能")  阅读(547)  评论(0编辑  收藏  举报