php 辅助函数,PHP 数组辅助函数

/**

* 取多维数据中某字段的值

* @param array $array 数据源数组

* @param string|array $field 要获取的字段

* @return array 结果数组

*/

function array_muliti_field($array, $field)

{

$resp = [];

foreach($array as $k => $v) {

if(is_array($field)) {

foreach($field as $f) {

if(isset($v[$f]) && $v[$f] !== null) {

$resp[$f][$v[$f]] = $v[$f];

}

}

} elseif(isset($v[$field]) && $v[$field] !== null){

$resp[] = $v[$field];

}

}

return $resp;

}/**

* 将多维数组中的某一个元素作为键名,重新生成数组

*

* $array = [

* 0 => ['id'=>10, 'title'=>'t10'],

* 1 => ['id'=>11, 'title'=>'t11']

* ];

*

* $res = array_set_key($array, 'id');

*

* 结果如下:

* $res = [

* 10 => ['id'=>10, 'title'=>'t10'],

* 11 => ['id'=>11, 'title'=>'t11']

* ];

*

* @param array $array 要处理的数组

* @param string $key 作为 key 的字段名称

* @param string $valuekey [description]

* @return array 新生成的数组

*/

function array_set_key($array, $key = '', $valuekey = '')

{

$res = [];

while (list($k, $v) = each($array)) {

if ($key == '') {

$res[] = (($valuekey != '') ? $v[$valuekey] : $v);

} else {

$res[$v[$key]] = (($valuekey != '') ? $v[$valuekey] : $v);

}

}

reset($array);

return $res;

}/**

* 将多维数组中的某两个元素作为键名组成二维数组

* $array = [

* 0 => ['id'=>10,'title'=>'t10'],

* 1 => ['id'=>11,'title'=>'t11'],

* 2 => ['id'=>11,'title'=>'t12']

* ];

*

* $res = array_set_keys($array, 'id', 'title');

*

* 结果如下:

* $res = [

* 10 => [

* 't10' => ['id'=>10,'title'=>'t10']

* ],

*

* 11 => [

* 't11' => ['id'=>11,'title'=>'t11'],

* 't12' => ['id'=>11,'title'=>'t12']

* ]

* ];

* @param [type] $array [description]

* @param [type] $key1 [description]

* @param string $key2 [description]

* @param string $valuekey [description]

* @return [type] [description]

*/

function array_set_keys($array, $key1, $key2 = '', $valuekey = '')

{

$res = [];

while (list($k, $v) = each($array)) {

$k1 = $v[$key1];

$vl = ($valuekey != '') ? $v[$valuekey] : $v;

if ($key2 == '') {

$res[$k1][] = $vl;

} else {

$res[$k1][$v[$key2]] = $vl;

}

}

reset($array);

return $res;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值