2013-03-13 66 views
0

如何计算数组的部分?例如:切片数组和计数

阵:

[name] => Michael 
[surname] => Hadfield 
[midname] => Olsow 
[email] => [email protected] 
[phone] => 3342020 

我想算阵列领域排除[midname]和[电话] 所以结果应该是3

同时,我想从这个创建数组阵列结果:

[name] => Michael 
[surname] => Hadfield 
[email] => [email protected] 

这可能吗?

+0

[你有什么尝试?](http://www.whathaveyoutried.com/)请参见[ask advice](http://stackoverflow.com/questions/ask-advice)。 – 2013-03-13 01:20:50

回答

1

你可以尝试这样的事情:

$keys_to_exclude = array('midname', 'phone'); 
$new_array = array_diff_key($original_array, array_flip($keys_to_exclude)); 
echo count($new_array); 
print_r($new_array); 

有了这个输入数组:

$original_array = array( 
    'name' => 'Michael', 
    'surname' => 'Hadfield', 
    'midname' => 'Olsow', 
    'email' => '[email protected]', 
    'phone' => 3342020 
); 

你应该得到your desired output,也就是echo count();打印3所得$new_array是:

Array 
(
    [name] => Michael 
    [surname] => Hadfield 
    [email] => [email protected] 
) 
+0

它给了我一个错误: 警告(2):array_combine()[function.array-combine]:两个参数应该有相同数量的元素[APP/Controller/UsersController.php,98行] Warning ):array_diff_key()[function.array-diff-key]:参数#2不是数组[APP/Controller/UsersController.php,第99行] /app/Controller/UsersController.php(line 100) null – 2013-03-13 01:44:58

0
  1. 使用循环计数的部分你想

  2. 乘以·6(假设总有五个部分和三个要算)

    $count = count($array) * .6;的的count($array)结果

+0

但在这种情况下,它也会计算该字段。我需要排除它们。 – 2013-03-13 01:23:23

0

我猜你总是可以在阵列,取消设置2个索引复制,再算上它:

$array_copy = $array; 
unset($array_copy('midname')); // Note unsetting a non-existent key does NOT throw an error. 
unset($array_copy('phone')); 
echo count($array_copy);