GVKun编程网logo

PHP使用array_fill定义多维数组的方法(php 多维数组)

10

本篇文章给大家谈谈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 多维数组)

PHP使用array_fill定义多维数组的方法(php 多维数组)

本文实例讲述了PHP使用array_fill定义多维数组的方法。分享给大家供大家参考。具体分析如下:

PHP中可以用多个array_fill嵌套完成多维数组的定义:

rush:PHP;"> $creation=array_fill(0,3,array_fill(0,2,null));

可用如下语句进行填充:

rush:PHP;"> $abc=0; for($i=0;$i<3;$i++) { for($j=0;$j<2;$j++) { $abc=$abc+1; $creation[$i][$j]=$abc; } }

结果为:

Array ( [0] => 1 [1] => 2 ) [1] => Array ( [0] => 3 [1] => 4 ) [2] => Array ( [0] => 5 [1] => 6 ) )

希望本文所述对大家的PHP程序设计有所帮助。

array_map/array_filter/array_walk遍历数组的方式和foreach一样,谁要快一些啊?

array_map/array_filter/array_walk遍历数组的方式和foreach一样,谁要快一些啊?

array_walk相当于foreach:

$arr = [''Client''=&gt;''jQuery'',''Server''=&gt;''PHP''];
array_walk($arr, function($v, $k) {
    echo "键:$k 值:$v\n";
});
登录后复制
登录后复制

比如去除数组$arr元素的前后空白:

array_walk($arr, function(&amp;$v) { $v = trim($v); });
foreach($arr as &amp;$v) { $v = trim($v); }
array_filter: 用回调函数过滤数组中的单元,返回过滤后的数组

var_export(
    array_filter([1, 2, 3], function($v) {
        return $v &gt; 1;
    })
);
和
foreach([1, 2, 3] as $k =&gt; $v) {
    if($v &gt; 1) {
        $tmp[$k] = $v;
    }
}
var_export($tmp);
都输出:
array (
  1 =&gt; 2,
  2 =&gt; 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 =&gt; 1,
  1 =&gt; 4,
  2 =&gt; 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''=&gt;''jQuery'',''Server''=&gt;''PHP''];
array_walk($arr, function($v, $k) {
    echo "键:$k 值:$v\n";
});
登录后复制
登录后复制

比如去除数组$arr元素的前后空白:

array_walk($arr, function(&amp;$v) { $v = trim($v); });
foreach($arr as &amp;$v) { $v = trim($v); }
array_filter: 用回调函数过滤数组中的单元,返回过滤后的数组

var_export(
    array_filter([1, 2, 3], function($v) {
        return $v &gt; 1;
    })
);
和
foreach([1, 2, 3] as $k =&gt; $v) {
    if($v &gt; 1) {
        $tmp[$k] = $v;
    }
}
var_export($tmp);
都输出:
array (
  1 =&gt; 2,
  2 =&gt; 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 =&gt; 1,
  1 =&gt; 4,
  2 =&gt; 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():以填充数据的方式创建新数组

PHP array_fill() 函数会以填充数据的方式创建一个新数组,或者说使用某个值将数组填充到指定的长度,其语法如下:

array array_fill ( int $start_index,int $num,mixed $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和多维数组

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从哈希表(数组)中删除项目

在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从哈希表(数组)中删除项目的相关知识,请在本站进行查询。

本文标签:

上一篇PHP使用strtotime计算两个给定日期之间天数的方法(php求两个日期的间隔天数)

下一篇php访问数组最后一个元素的函数end()用法(php 获取数组最后一个元素)