Отдельные вызовы данных Db в одном цикле foreach - PullRequest
1 голос
/ 23 декабря 2009

ОК, надеюсь, это не слишком конкретно. У меня есть управляемая базой данных CMS, которую коллега использует со многими категориями. Вот как это повторяет некоторые продукты, которые мы имеем сейчас:

$offers = get_offers('category1','none','compare');

  foreach ($offers as $row) {
    $offername = $row['name'];
    $offerlogo = $row['logo'];
    $offera=$row['detailA'];
    $offerb=$row['detailB'];
    $offerc=$row['detailC'];

 echo "you can have $offername, it's logo looks like <img src='$offerlogo'>" it's characteristics are $offera, offerb, offerc, etc";}

Это отлично работает. Моя проблема в том, что я хочу получить оферту, оферту и оферту из другой категории, категории 2. Я пытался пойти так:

$offers = get_offers('category1','none','compare');

  foreach ($offers as $row) {

    $offername = $row['name'];
    $offerlogo = $row['logo'];

$offers = get_offers('category2','none','compare');

    $offera=$row['detailA'];
    $offerb=$row['detailB'];
    $offerc=$row['detailC'];

echo "you can have $offername, it's logo looks like <img src='$offerlogo'>" it's characteristics are $offera, offerb, offerc, etc";}

Но, конечно, это не работает. Я не хочу, чтобы мой коллега проходил через CMS и копировал всю информацию, есть ли способ заставить это работать?

Ответы [ 2 ]

0 голосов
/ 24 декабря 2009

Я согласен с НГМ. Если категории совпадают, вы можете получить результаты другого вызова со следующими данными:

$offersCat1 = get_offers('category1','none','compare');  
$offersCat2 = get_offers('category2','none','compare');  
foreach ($offers as $key=>$row) {  
    $offera=$offersCat2[$key]['detailA'];  
    $offerb=$offersCat2[$key]['detailB'];  
    $offerc=$offersCat2[$key]['detailC'];  
    echo "you can have {$row['name']}, it's logo looks like <img src='{$row['logo']}'> it's characteristics are $offera, offerb, offerc, etc";  
}

Этот пример будет делать то же самое, но вы держите его в цикле foreach. Используя строку $ key => $, вы можете получить доступ к ключу массива. Я также позволил себе выводить переменные напрямую, а не помещать их в переменные. Если вы поместите {} вокруг переменной массива (или переменной класса), вы можете использовать их в echo, print или <<<. Это делает мою жизнь проще. </p>

Пример: echo "This variable {$variable['test']}";

0 голосов
/ 23 декабря 2009

Предполагая, что порядок результатов обоих вызовов на get_offers совпадает, я думаю, что это может сработать для вас:

$offers['cat1'] = get_offers('category1', 'none', 'compare');
$offers['cat2'] = get_offers('category2', 'none', 'compare');

$numberOfOffers = count($offers['cat1']);
for ($i = 0; $i < $numberOfOffers; $i++)
{
    $offername = $offers['cat1'][$i]['name'];
    $offerlogo = $offers['cat1'][$i]['logo'];

    $offera = $offers['cat2'][$i]['detailA'];
    $offerb = $offers['cat2'][$i]['detailB'];
    $offerc = $offers['cat2'][$i]['detailC'];

    echo "you can have $offername, its logo looks like <img src='$offerlogo'> its characteristics are $offera, $offerb, $offerc, etc\n"; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...