【问题标题】:Counting the first value from a multidimensional array计算多维数组中的第一个值
【发布时间】:2018-07-06 21:43:31
【问题描述】:

我想知道是否可以计算一个值在数组中记录的次数?比如我有2句话:

my name is marwan
and i am 20 years old

第一句包含4个单词,第二句包含6个单词

现在我有了这个数组:

$array = array(

  0 => array('1', 'value1', 'my', 'value3'),
  1 => array('1', 'value1', 'name', 'value3'),
  2 => array('1', 'value1', 'is', 'value3'),
  3 => array('1', 'value1', 'marwan', 'value3'),

  4 => array('2', 'value1', 'and', 'value3'),
  5 => array('2', 'value1', 'i', 'value3'),
  6 => array('2', 'value1', 'am', 'value3'),
  7 => array('2', 'value1', '20', 'value3'),
  8 => array('2', 'value1', 'years', 'value3'),
  9 => array('2', 'value1', 'old', 'value3')

)

这里,每个单词都有自己的数组,数组的第一个值是句子编号。我想在这里实现的是通过 for 循环向我显示第一句和第二句中的单词总数。所以输出应该是这样的:

Sentence '1' has '4' words:
my name is marwan

Sentence '2' has '6' words:
and i am 20 years old

这样的事情可能吗?

【问题讨论】:

  • 当然可以。您可以使用array_column() 获取所有句子编号的数组。然后使用array_count_values() 计算重复次数。
  • @Barmar 你能指导我吗?我还想要这些数组的 value1 和 value3。
  • StackOverflow 不是免费的编码服务。所以希望你try to solve your own problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
  • 如果你知道如何编程,你应该能够扩展答案中的解决方案,以类似的方式从数组中获取其他值。

标签: php arrays for-loop


【解决方案1】:

您可以使用array_reduce 将数组拆分为句子,然后简单地遍历句子。

$data = array_reduce($array, function($carry, $item) {
    if (!isset($carry[$item[0]])) {
        $carry[$item[0]] = [];
    }
    $carry[$item[0]][] = $item[2];
    return $carry;
}, []);

foreach ($data as $sentence => $words) {
    echo "Sentence '$sentence' has '" .count($words) . "' words\n";
    echo join(' ', $words) . "\n\n";
}

【讨论】:

  • 在 PHP 中,使用 implode() 比使用 join() 更惯用。
  • 好的,到目前为止效果很好,谢谢。但是现在我如何从数组中获取单个值?因为每个数组中有3个值,我想在循环中获取特定值。
  • @Philipp 有什么地方可以通过聊天与您交谈吗?这里真的很难。
猜你喜欢
  • 1970-01-01
  • 2016-10-13
  • 2023-02-06
  • 1970-01-01
  • 2019-02-09
  • 2012-07-18
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
相关资源
最近更新 更多