Преобразование двухмерных массивов PHP в расширение PHP - PullRequest
0 голосов
/ 03 июня 2019

Как я могу прочитать многомерный массив в расширении PHP?

$dataValue[0][1] = 'a';
$dataValue[0][2] = 'b';

А вот мой код расширения PHP:

ZEND_HASH_FOREACH_BUCKET(Z_ARRVAL_P(data_r_value), Bucket *bucket)
    setArray(&bucket, currentRow, currentCol, dataValue[currentRow][currentCol]);
ZEND_HASH_FOREACH_END();

Я пытался использовать dataValue[currentRow][currentCol] для чтения значения, но выдает ошибку:

'[': недопустимо для struct

Заранее спасибо.

1 Ответ

0 голосов
/ 05 июня 2019

Я только что решил свою проблему, используя 2 для цикла.

Массив PHP:

$data[0][1] = 'a'; // $data[x][y], x: row, y: col

В C, расширение PHP:

zend_bool found = FALSE;
zend_long iRow;
zend_string *sRow;
zval *rowArray;
ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(format_handle), iRow, sRow, rowArray)
    if (iRow == rowNeeded) {
        zend_long iCol;
        zend_string *sCol;
        zval *formatData;
        ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(rowArray), iCol, sCol, formatData)
            if (iCol == colNeeded) {
               found = TRUE;
               break;
            }
        ZEND_HASH_FOREACH_END();
     }
     if (found) { break; }
ZEND_HASH_FOREACH_END();
...