Сумма динамического массива То же имя php [дубликат]

Примером этого исключаемого исключения является: Когда вы пытаетесь проверить что-то, это null.

Например:

string testString = null; //Because it doesn't have a value (i.e. it's null; "Length" cannot do what it needs to do)

if (testString.Length == 0) // Throws a nullreferenceexception
{
    //Do something
} 

Время выполнения .NET исключение NullReferenceException при попытке выполнить действие над чем-то, что не было инстанцировано, т.е. код выше.

По сравнению с ArgumentNullException, которое обычно выбрано как защитная мера, если метод ожидает, что то, что происходит

Дополнительная информация находится в C # NullReferenceException и Null Parameter .

7
задан 7 revs, 3 users 61% 26 July 2010 в 21:28
поделиться

5 ответов

<?php

// array of bank structure
$banks = array();
$banks[] = array('name'=>'Bank BRI','amount'=>rand());
$banks[] = array('name'=>'Bank BRI','amount'=>rand());
$banks[] = array('name'=>'Bank BCA','amount'=>rand());
$banks[] = array('name'=>'Bank CIMB','amount'=>rand());
$banks[] = array('name'=>'Bank BRI','amount'=>rand());
$banks[] = array('name'=>'Bank CIMB','amount'=>rand());
$banks[] = array('name'=>'Bank BRI','amount'=>rand());
$banks[] = array('name'=>'Bank BNI','amount'=>rand());
$banks[] = array('name'=>'Bank CIMB','amount'=>rand());
$banks[] = array('name'=>'Bank BCA','amount'=>rand());
$banks[] = array('name'=>'Bank Mandiri','amount'=>rand());
$banks[] = array('name'=>'Bank BCA','amount'=>rand());
$banks[] = array('name'=>'Bank BCA','amount'=>rand());
$banks[] = array('name'=>'Bank Permata','amount'=>rand());

// begin the iteration for grouping bank name and calculate the amount
$amount = array();
foreach($banks as $bank) {
    $index = bank_exists($bank['name'], $amount);
    if ($index < 0) {
        $amount[] = $bank;
    }
    else {
        $amount[$index]['amount'] +=  $bank['amount'];
    }
}
print_r($amount); //display 

// for search if a bank has been added into $amount, returns the key (index)
function bank_exists($bankname, $array) {
    $result = -1;
    for($i=0; $i<sizeof($array); $i++) {
        if ($array[$i]['name'] == $bankname) {
            $result = $i;
            break;
        }
    }
    return $result;
}
6
ответ дан Husni 25 August 2018 в 07:13
поделиться

Пример в C #:

Dictionary<string,object>[] items = {
  new Dictionary<string, object> {{ "name", "Bank BRI"}, {"amount", 0 }},
  new Dictionary<string, object> {{ "name", "Bank BRI"}, {"amount", 0 }},
  new Dictionary<string, object> {{ "name", "Bank BCA"}, {"amount", 1412341234 }},
  new Dictionary<string, object> {{ "name", "Bank CIMB Niaga"}, {"amount", 532532552 }} 
};

var amounts = new Dictionary<string, int>();

foreach (var item in items) {
  string bank = (string)item["name"];
  int amount = (int)item["amount"];
  if (amounts.ContainsKey(bank)) {
    amounts[bank] += amount;
  } else {
    amounts.Add(bank, amount);
  }
}

foreach (var amount in amounts) {
  Console.WriteLine("{0}: {1}", amount.Key, amount.Value);
}
2
ответ дан Guffa 25 August 2018 в 07:13
поделиться
  • 1
    Спасибо, я попытаюсь реализовать ваш скрипт в PHP. – Chandra 20 July 2010 в 04:37
  • 2
    мой скрипт застрял ... я все еще пытаюсь преобразовать ваш C # в PHP. Есть идеи? Благодарю. – Chandra 20 July 2010 в 05:17
  • 3
    Нет необходимости конвертировать сценарий Guffa. Ответ JGB146 практически не изменился. – ozatomic 20 July 2010 в 06:15
  • 4
    Решено! Благодарю. – Chandra 20 July 2010 в 07:25

Итак, сначала вам нужно $amountsArray, чтобы каким-то образом присвоить значения, которые вы указали. Затем:

$bankTotals = array();
foreach($amountsArray as $amount)
{
  $bankTotals[$amount['name']] += $amount['amount'];
}

После этого $bankTotals представляет собой массив, индексированный по имени банка, со значением общей суммы для банка. Вы можете использовать этот массив, как вы считаете нужным здесь.

Одна вещь, которая может быть полезна, - это еще один цикл foreach, чтобы распечатать все:

foreach($bankTotals as $name => $amount)
{
  echo $name.".....".$amount."\n";
}
8
ответ дан Jeffrey Blake 25 August 2018 в 07:13
поделиться
  • 1
    Спасибо, JGB146 Я уже почти 3 дня пишу скрипты без каких-либо результатов ... Решенный сейчас! – Chandra 20 July 2010 в 07:18
  • 2
    Это самое простое решение. Вот как я это делаю. – PHPGuru 31 July 2013 в 06:03

Я предпочел бы добавить

$bankTotals = array();
foreach($amountsArray as $amount)
{
 if(isset($bankTotals[$amount['name']]))
    $bankTotals[$amount['name']] += $amount['amount'];
 else
    $bankTotals[$amount['name']] = $amount['amount'];
}
2
ответ дан Shubham 25 August 2018 в 07:13
поделиться
$a = arrayofindonesianbanks;

foreach ($a as $anarrays) {
        echo "$anarrays[name]."  ".$anarrays[amount]";
    }
}

см. foreach в php.

0
ответ дан user 25 August 2018 в 07:13
поделиться
  • 1
    Большое спасибо, я пытаюсь преобразовать алгоритм GUFFA в PHP. но я все еще застрял / запутался. – Chandra 20 July 2010 в 05:19
  • 2
    Решено! Благодарю. – Chandra 20 July 2010 в 07:25
  • 3
    ok klick dont tanda oknya ahahah. – user 20 July 2010 в 18:48
Другие вопросы по тегам:

Похожие вопросы: