本篇文章给大家谈谈PHP使用array_fill定义多维数组的方法,以及php多维数组的知识点,同时本文还将给你拓展array_map/array_filter/array_walk遍历数组的方式和f
本篇文章给大家谈谈PHP使用array_fill定义多维数组的方法,以及php 多维数组的知识点,同时本文还将给你拓展array_map/array_filter/array_walk遍历数组的方式和foreach一样,谁要快一些啊?、PHP array_fill():以填充数据的方式创建新数组、php – array_filter和多维数组、PHP – 使用array_filter从哈希表(数组)中删除项目等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- PHP使用array_fill定义多维数组的方法(php 多维数组)
- array_map/array_filter/array_walk遍历数组的方式和foreach一样,谁要快一些啊?
- PHP array_fill():以填充数据的方式创建新数组
- php – array_filter和多维数组
- PHP – 使用array_filter从哈希表(数组)中删除项目
PHP使用array_fill定义多维数组的方法(php 多维数组)
本文实例讲述了PHP使用array_fill定义多维数组的方法。分享给大家供大家参考。具体分析如下:
PHP中可以用多个array_fill嵌套完成多维数组的定义:
可用如下语句进行填充:
结果为:
希望本文所述对大家的PHP程序设计有所帮助。
array_map/array_filter/array_walk遍历数组的方式和foreach一样,谁要快一些啊?
array_walk相当于foreach:
$arr = [''Client''=>''jQuery'',''Server''=>''PHP'']; array_walk($arr, function($v, $k) { echo "键:$k 值:$v\n"; });
比如去除数组$arr元素的前后空白:
array_walk($arr, function(&$v) { $v = trim($v); }); foreach($arr as &$v) { $v = trim($v); } array_filter: 用回调函数过滤数组中的单元,返回过滤后的数组 var_export( array_filter([1, 2, 3], function($v) { return $v > 1; }) ); 和 foreach([1, 2, 3] as $k => $v) { if($v > 1) { $tmp[$k] = $v; } } var_export($tmp); 都输出: array ( 1 => 2, 2 => 3, )
PHP数组映射化简(MapReduce):
array_map/array_reduce array_map: 将回调函数作用到给定数组的单元上 var_export( array_map(function ($v) { return $v * $v; }, [1, 2, 3]) ); 和 foreach([1, 2, 3] as $v) { $tmp[] = $v * $v; } var_export($tmp); 都输出: array ( 0 => 1, 1 => 4, 2 => 9, )
array_reduce: 用回调函数迭代地将数组简化(reduce)为单一的值
//输出16,即10+1+2+3,其中10作为初始值.
echo array_reduce([1, 2, 3], function($result, $item) { $result = $result + $item; return $result; }, 10); 用foreach表达: $result = 10; foreach([1, 2, 3] as $v) { $result = $result + $v; } echo $result;
执行效果都一样,但是具体的用函数快还是用foreach快些啊
回复内容:
array_walk相当于foreach:
$arr = [''Client''=>''jQuery'',''Server''=>''PHP'']; array_walk($arr, function($v, $k) { echo "键:$k 值:$v\n"; });
比如去除数组$arr元素的前后空白:
array_walk($arr, function(&$v) { $v = trim($v); }); foreach($arr as &$v) { $v = trim($v); } array_filter: 用回调函数过滤数组中的单元,返回过滤后的数组 var_export( array_filter([1, 2, 3], function($v) { return $v > 1; }) ); 和 foreach([1, 2, 3] as $k => $v) { if($v > 1) { $tmp[$k] = $v; } } var_export($tmp); 都输出: array ( 1 => 2, 2 => 3, )
PHP数组映射化简(MapReduce):
array_map/array_reduce array_map: 将回调函数作用到给定数组的单元上 var_export( array_map(function ($v) { return $v * $v; }, [1, 2, 3]) ); 和 foreach([1, 2, 3] as $v) { $tmp[] = $v * $v; } var_export($tmp); 都输出: array ( 0 => 1, 1 => 4, 2 => 9, )
array_reduce: 用回调函数迭代地将数组简化(reduce)为单一的值
//输出16,即10+1+2+3,其中10作为初始值.
echo array_reduce([1, 2, 3], function($result, $item) { $result = $result + $item; return $result; }, 10); 用foreach表达: $result = 10; foreach([1, 2, 3] as $v) { $result = $result + $v; } echo $result;
执行效果都一样,但是具体的用函数快还是用foreach快些啊
PHP array_fill():以填充数据的方式创建新数组
PHP array_fill() 函数会以填充数据的方式创建一个新数组,或者说使用某个值将数组填充到指定的长度,其语法如下:array array_fill ( int $start_index,int $num,mixed $value )
参数说明:-
start_index 表示数组索引,也即从哪里开始填充数组:
- 如果 start_index 为非负数,数组的索引将从 start_index 开始,直到 start_index + num - 1 结束;
- 如果 start_index 为负数,数组的索引将由 start_index,1,2,...,num-1 组成。
- num 表示要填充到的长度。
- value 表示要填充的值。
array_fill() 将会创建一个新数组,该数组包含 num 个元素,每个元素的值都是 value。和 array_pad() 不同,array_fill() 会以填充的方式创建一个新数组,而不是基于原有数组。
返回值:返回填充后的新数组。
使用示例如下:
<?PHP $a = array_fill(5,6,'banana'); //使用banana填充数组到6个元素,索引键由数字5开始 $b = array_fill(-2,4,'pear'); //使用pear填充数组到4个元素,索引键由-2开始 $c = array_fill(3,array('PHP ','http://c.biancheng.net/PHP/','C语言中文网')); // 用一个数组填充成一个二维数组 print_r($a); print_r($b); print_r($c); ?>运行结果如下:
Array
(
[5] => banana
[6] => banana
[7] => banana
[8] => banana
[9] => banana
[10] => banana
)
Array
(
[-2] => pear
[0] => pear
[1] => pear
[2] => pear
)
Array
(
[3] => Array
(
[0] => PHP
[1] => http://c.biancheng.net/PHP/
[2] => C语言中文网
)
[4] => Array
(
[0] => PHP
[1] => http://c.biancheng.net/PHP/
[2] => C语言中文网
)
)
php – array_filter和多维数组
$arr[] = array("id" => 11,"name" => "First"); $arr[] = array("id" => 52,"name" => "Second"); $arr[] = array("id" => 6,"name" => "Third"); $arr[] = array("id" => 43,"name" => "Fourth");
我想得到一个ID对应的名字,以便我可以这样做:
$name = findNameFromID(43);
并获得,例如,“第四”.
我想过使用array_filter但我对如何正确传递变量有点困惑.我见过像this one这样的问题,但我似乎无法将解决方案扩展到多维数组.
有帮助吗?
findNameFromID($array,$ID) { return array_values(array_filter($array,function($arrayValue) use($ID) { return $arrayValue['id'] == $ID; } )); } $name = findNameFromID($arr,43); if (count($name) > 0) { $name = $name[0]['name']; } else { echo 'No match found'; }
PHP 5.3.0及以上版本
编辑
或变体:
findNameFromID($array,$ID) { $results = array_values(array_filter($array,function($arrayValue) use($ID) { return $arrayValue['id'] == $ID; } )); if (count($results) > 0) { return $name[0]['name']; } else { return FALSE; } } $name = findNameFromID($arr,43); if (!$name) { echo 'No match found'; }
编辑#2
从PHP 5.5开始,我们可以使用array_column()
findNameFromID($array,$ID) { $results = array_column($array,'name','id'); return (isset($results[$ID])) ? $results[$ID] : FALSE; }
PHP – 使用array_filter从哈希表(数组)中删除项目
在PHP中,我知道一旦将项目放入数组中,就没有正式的方法来删除它们.但对我的问题必须有一个“最好的方法”解决方案.我相信这可能在于array_filter函数.
基本上,我有一个购物车对象,可以将项目存储在哈希表中.想象一下,你一次只能购买任何一件物品.
我做
add_item(1);
add_item(2);
remove_item(1);
get_count()仍然返回2.
var $items;
function add_item($id) {
$this->items[$id] = new myitem($id);
}
function remove_item($id) {
if ($this->items[$id]) {
$this->items[$id] = false;
return true;
} else {
return false;
}
}
function get_count() {
return count($this->items);
}
人们认为在get_count中使用的最佳方法是什么?我无法弄清楚使用array_filter的最佳方法,它只是不返回false值(不编写单独的回调).
谢谢 :)
解决方法:
没有官方的方式?当然有! Unset!
<?PHP
class foo
{
var $items = array();
function add_item($id) {
$this->items[$id] = new myitem($id);
}
function remove_item($id)
{
unset( $this->items[$id] );
}
function get_count() {
return count($this->items);
}
}
class myitem
{
function myitem( $id )
{
// nothing
}
}
$f = new foo();
$f->add_item( 1 );
$f->add_item( 2 );
$f->remove_item( 1 );
echo $f->get_count();
还有,这是PHP4吗?因为如果没有,你应该研究一些SPL的东西,如ArrayObject或至少Countable和ArrayAccess接口.
编辑
这是一个直接使用接口的版本
<?PHP
class foo implements ArrayAccess, Countable
{
protected $items = array();
public function offsetExists( $offset )
{
return isset( $this->items );
}
public function offsetGet( $offset )
{
return $this->items[$offset];
}
public function offsetSet( $offset, $value )
{
$this->items[$offset] = $value;
}
public function offsetUnset( $offset )
{
unset( $this->items[$offset] );
}
public function count()
{
return count( $this->items );
}
public function addItem( $id )
{
$this[$id] = new myitem( $id );
}
}
class myitem
{
public function __construct( $id )
{
// nothing
}
}
$f = new foo();
$f->addItem( 1 );
$f->addItem( 2 );
unset( $f[1] );
echo count( $f );
这是一个作为ArrayObject实现的版本
<?PHP
class foo extends ArrayObject
{
public function addItem( $id )
{
$this[$id] = new myitem( $id );
}
}
class myitem
{
public function __construct( $id )
{
// nothing
}
}
$f = new foo();
$f->addItem( 1 );
$f->addItem( 2 );
unset( $f[1] );
echo count( $f );
今天的关于PHP使用array_fill定义多维数组的方法和php 多维数组的分享已经结束,谢谢您的关注,如果想了解更多关于array_map/array_filter/array_walk遍历数组的方式和foreach一样,谁要快一些啊?、PHP array_fill():以填充数据的方式创建新数组、php – array_filter和多维数组、PHP – 使用array_filter从哈希表(数组)中删除项目的相关知识,请在本站进行查询。
本文标签: