Это сводится к сумасшедшей системе типов PHP.
$fruits['response']['errormessage']
- это строка 'banana'
, поэтому вы пытаетесь получить доступ к символу в этой строке по индексу ['orange']
.
Строка 'orange'
преобразуется в целое число для целей индексации, поэтому она становится 0
, как в $fruits['response']['errormessage'][0]
. 0-й индекс строки является первым символом строки, поэтому для непустых строк он по существу установлен. Таким образом isset()
возвращает истину.
Я не знаю, что вы пытаетесь сделать в первую очередь, поэтому я не могу предложить никакого "исправления" для этого. Это по замыслу.