#php #loops #conditional-statements
#php #циклы #условные операторы
Вопрос:
Я не могу посчитать эти слова, у меня есть некоторые данные, подобные этому :
web = 1
sistem=1
web=1
sistem=1
web=1
sistem=1
sistem=0
sistem=0
web=0
sistem=0
web=0
sistem=0
web=0
web=0
Я хочу получить результат, подобный этому :
web = 3
sistem = 3
Я использую array_count_values(), но этот результат не очень хорош
Array ( [web=1] => 3 [sistem=1] => 3 [sistem=0] => 4 [web=0] => 4 )
Мой код, подобный этому :
foreach ($g as $key => $kata) {
if (strpos($cleanAbstrak, $kata)) {
echo $kata . $ada . "<br>";
$p[] = $kata . "=" . $ada;
// print_r($p);
echo "<br><br>";
} else {
echo $kata, $tidak . "<br>";
$q[] = $kata . "=" . $tidak;
// $m = explode(" ", $q);
// print_r($q);
// echo $q . '<br>';
echo "<br><br>";
}
}
$s = array_merge($p, $q);
echo "<br><br>";
print_r($s);
echo "<br>";
$f = array_count_values($s);
// print_r($f);
echo "<br><br>";
большое вам спасибо, если вы готовы мне помочь
Комментарии:
1. вы можете проверить,
$tidak == 0
не используете ли вы его, нет?2. Спасибо, что ответили на мой вопрос, но я не очень понимаю, где я должен это ввести?
3. с переменной, я полагаю, было просто,
$tidak
поэтомуsistem=0 <- $tidak
используйте if для контрольной переменной и не используйте ее, если равно нулю.if($tidak==0){continue;}else{ $q[] = $kata . "=" . $tidak; ...
4. Откуда данные? Можете ли вы показать
var_export($g);
передforeach()
циклом.5. $ g берется из предыдущих данных
Ответ №1:
Другой простой способ — использовать подобный счетчик:
$web=0;
$sistem=0;
foreach ($g as $key => $kata) {
if (strpos($cleanAbstrak, $kata)) {
$sistem=$sistem $ada;
} else {
$web=$web $tidak
}
}
echo 'web='.$web.'<br> sistem='.$sistem;
Комментарии:
1. Вы это тестировали?
Ответ №2:
Во-первых, вам нужно разделить слово и значение. Во-вторых, вам нужно проверить значение: если оно равно нулю, вы отпускаете его (больше не можете его удерживать). Еще вы подсчитываете значение; если оно записано, я полагаю, оно может быть больше 1 ; если это не так, это должно быть «word» или ничего (что значительно облегчило бы подсчет).
Что-то вроде
<?php
$tab = [
'web=1',
'sistem=1',
'web=1',
'sistem=1',
'web=1',
'sistem=1',
'sistem=0',
'sistem=0',
'web=0',
'sistem=0',
'web=0',
'sistem=0',
'web=0',
'web=0',
];
$tab_clean = [];
foreach($tab as $item) {
preg_match('/([a-z] )=([d] )/', $item, $matches);
//print_r($matches);
$word = $matches[1];
$number = $matches[2];
for($i = 0; $i < $number; $i ) {
$tab_clean[] = $word;
}
}
$tab_count = array_count_values($tab_clean);
print_r($tab_count);
?>