Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: достать значение из массива  (Прочитано 943 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн z-0091

  • Автор темы
  • Новичок
  • *
  • Сообщений: 26
  • Все будет хорошо^^
    • Просмотр профиля
достать значение из массива
« : 27 Января 2012, 21:01:15 »
<?
$voice_cmd = $json_array["hypotheses"][0]["utterance"];

нужно получить значение hypotheses и сравнить с 0.5
я правильно делаю?
$voice_cmd[hypotheses];
$test = $voice_cmd[hypotheses];
if ( $test >= 0.5 )
echo $test;
?>
Век живи - век учись.

Оффлайн ii343hbka

  • Старожил
  • *
  • Сообщений: 1048
    • Просмотр профиля
Re: достать значение из массива
« Ответ #1 : 27 Января 2012, 21:15:14 »
я так понимаю это php и занимаетесь вы разбором прилетающего json. Тогда непонятно, почему массив трехмерный. и достаточно только <?
$voice_cmd = $json_array["hypotheses"][0]["utterance"];

if ( $voice_cmd >= 0.5 )
echo $test;
?>
мне так кажется
ж)
ммм... Убунточка

Оффлайн z-0091

  • Автор темы
  • Новичок
  • *
  • Сообщений: 26
  • Все будет хорошо^^
    • Просмотр профиля
Re: достать значение из массива
« Ответ #2 : 27 Января 2012, 21:20:43 »
я так понимаю это php и занимаетесь вы разбором прилетающего json. Тогда непонятно, почему массив трехмерный. и достаточно только <?
$voice_cmd = $json_array["hypotheses"][0]["utterance"];

if ( $voice_cmd >= 0.5 )
echo $test;
?>
мне так кажется
да, но дело в том что мне нужно сравнить именно hypotheses. ТАк как utterance идут символы. Вот как это реализовано в одном из примерах.
my $json_xs = JSON::XS->new();
        $json_xs->utf8(1);
        my @hypo = $json_xs->decode($json)->{'hypotheses'};

        my $dost = $hypo[0][0]{'confidence'};
        my $text = $hypo[0][0]{'utterance'};

        $dost = 0.0 if !defined $dost;
        $text = "" if !defined $text;

    print "+OK - Text is: \"$text\", confidence is: $dost\n";

    if($dost > 0.5)
    {
Век живи - век учись.

Оффлайн ii343hbka

  • Старожил
  • *
  • Сообщений: 1048
    • Просмотр профиля
Re: достать значение из массива
« Ответ #3 : 27 Января 2012, 21:31:21 »
Так. уже проще.
Такое ощущение, что в примере разбирают одну из переменных из прилетевшего json.
И, похоже, что переменная - это ассоциативный массив. Тогда корректно сравнить не удастся, так как hypotheses - массив.
так мне кажется.
ж)
ммм... Убунточка

Оффлайн z-0091

  • Автор темы
  • Новичок
  • *
  • Сообщений: 26
  • Все будет хорошо^^
    • Просмотр профиля
Re: достать значение из массива
« Ответ #4 : 27 Января 2012, 21:39:42 »
Ответ представляет собой нечто вида:

{"status":0,"id":"84e03bf4efe17fa7856333560d6faba4-1","hypotheses":[{"utterance":"раз два три","confidence":0.85437811}]}

Нас интересуют в ответе лишь два последних поля — utterance и confidence. Первое является искомой распознанной словом/фразой, второе — достоверностью распознавания. Если confidence будет более 0.5, можно считать, что распознавание достоверно.
Век живи - век учись.

Оффлайн ii343hbka

  • Старожил
  • *
  • Сообщений: 1048
    • Просмотр профиля
Re: достать значение из массива
« Ответ #5 : 27 Января 2012, 21:50:56 »
ок
смотрите
<?
$voice_cmd = $json_array["hypotheses"];

if ( $voice_cmd["confidence"] >= 0.5 )
echo $test;
?>
думаю, так оно заработает.
ж)
ммм... Убунточка

Оффлайн z-0091

  • Автор темы
  • Новичок
  • *
  • Сообщений: 26
  • Все будет хорошо^^
    • Просмотр профиля
Re: достать значение из массива
« Ответ #6 : 27 Января 2012, 22:07:00 »
спсаби, попробую
Век живи - век учись.

 

Страница сгенерирована за 0.032 секунд. Запросов: 25.