Drupal biçimine dizi dönüştürme

3 Cevap php

Bu ifade bana Drupal (yani son kullanıcı rolü) istediğiniz değeri verir:

global $user; return (end($user->roles));

ancak ben bu biçime dönüştürmek gerekir:

return array(
  0 => array('value' => value for value),
  // You'll usually want to stop here. Provide more values
  // if you want your 'default value' to be multi-valued:
  1 => array('value' => value for value),
  2 => ...
);

ve ben nasıl hiçbir fikrim var (ayrıca, bu format çok boyutlu bir dizidir?) ...

Any ideas? Thanks for any help, Theo.

3 Cevap

Ben tam hedefleyen ne emin değilim. Kayıt için $ user-> rollerinin şeklidir

array(
  rid => 'role_name',
  ...
)

Yukarıdaki ifadeyi kullanarak, aslında yüksek kimliği ile late kullanıcı rolü, ancak kullanıcı rolü alamadım.

Ben böyle bir biçim almak istiyorum tahmin ediyorum, bu konuda temizlemek için değiliz.

array(
  0 => array(rid => 'role_name'),
  1 => array(rid => 'role_name'),
  ...
)

Bu durumda eğer basit bir foreach döngüsü ile alabilirsiniz:

$result = array();
foreach ($user->roles as $key => $value) {
  $result[] = array($key => $value);
}
return $result;

Neden sadece:

global $user;
print_r($user->roles);

İşte size kullanıcıların rol gösterecektir. Ben sonuncusunu isterdim neden emin değilim. Zaten sizin için soruyorsunuz formatında döndürür. Oradan onun kadar aradığınız rolünü ayıklayın.

Bir anahtarlı diziye bunları taşımak için:

global $user;

$result = array();
foreach ($user->roles as $key => $value) {
  $result[] = array($key => $value);
}
return $result;

Yardımlarınız için teşekkürler - bana daha şimdi bu anlamak yaptık. Bu bir kimlik numarası ve bir isim kullanmak zorunda çünkü çalışma değildi çıkıyor. Yani son kodu oldu:

global $user;
return array(
0 => array('value' => end($user->roles))
);

Bu yüzden öyle çok boyutlu bir dizi oluşturmak zorunda olduğunu tahmin? Bunun için doğru biçimde olmasını ...