модификатор глобальной переменной php, не работающий

Глядя на свой график, я чувствую, что этого можно достичь с помощью 100% -ной столбчатой ​​диаграммы , в которой вы можете получить данные как для цветных, так и для серых участков. Затем используйте свойство метки, которое можно отобразить и с вращением .


Попытка получить похожий вид для гистограммы с использованием радиального градиента и стопроцентных столбцов

import { Component } from '@angular/core';
import { Surface, Path, Text, Group, Layout, LinearGradient, RadialGradient, GradientOptions, ShapeOptions } from '@progress/kendo-drawing';
import { Arc as DrawingArc, GradientStop } from '@progress/kendo-drawing';
import { Arc, Rect, ArcOptions } from '@progress/kendo-drawing/geometry';
function createColumn(rect, color) {
            const origin = rect.origin;
            const bottomRight = rect.bottomRight();

            const radialgradient = new RadialGradient({
               center:[0.5, 0],
                stops: [new GradientStop(0.5, color, 1),
                        new GradientStop(1, "#98FB98", 1)]
            });

            const path = Path.fromRect(rect, {
                    fill: radialgradient,
                    stroke: {
                        color: color,
                        width: 1
                    }
                });

              const path1 = Path.fromRect(rect, {
                    fill: {color: color},
                    stroke: {
                        color: color,
                        width: 1
                    }
                });

            const group = new Group();
            if(color == "#eee"){
                group.append(path1);
            }
            else{
                group.append(path);
            }

            return group;
        }

@Component({
  selector: 'my-app',
  template: `
    
      
      
          
          
      
      
        
        
         
        
      
    
  `
})
export class AppComponent {
public chartConfig = {
      seriesDefaults: {
          visual: function (e) {
              return createColumn(e.rect, e.options.color);
          }
      }
  };

}

14
задан Bart Kiers 9 January 2010 в 13:44
поделиться

3 ответа

Ваш пример кода выше работает для меня. Но вы также можете использовать супервариабель $ GLOBALS .

function Sum()
{
    $a = $GLOBALS["a"];
    $b =& $GLOBALS["b"];
    $b = $a + $b;
} 

Глобальные переменные не должны использоваться, если вы можете помочь этому. Есть лучшие способы сделать ваши функции. Используйте параметры (аргументы) (возможно, передайте ссылку ) и вместо этого верните значение .

/**
 * Calculate the sum of the parameters
 * @param int|float $a one or more parameter
 * @param int|float $a, ... 
 * @return int|float
 */
function sum($a)
{
    $args = func_get_args();
    return array_sum($args);
}

$a = 1;
$b = 2;

$b = sum($a, $b);

С PHPDOC вы может понять, что ваши функции делают лет без чтения кода. С хорошей IDE вы также можете получить объяснение и порядок аргументов при написании функции.

2
ответ дан 1 December 2019 в 06:54
поделиться

Единственное, что я могу себе представить, это что-то не так, если вы назначаете переменные в глобальной области видимости после первого вызова функции. То есть ваша функция фактически объявляет переменные, а затем вы просто перезаписываете их в другом месте. Например, вызов Sum () и затем делает $ a = 1 , $ b = 2 .

0
ответ дан 1 December 2019 в 06:54
поделиться

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

Попробовал найти причину: Похоже, что если у вас есть функция и вы поместили код операционной системы (пример php.net) внутри этой функции, вы получите ответ: 2. Это немного странно и в некотором роде имеет смысл...

(Я использую PHP 5.2.5 под Apache 2.2.8 в Win XP)

LE: МОЕ РЕШЕНИЕ Ладно, решено следующее: когда вы используете global во 2-й функции, вы, очевидно, получаете суперглобальные переменные, доступные всем (т.е. декалированные вне любой функции), но поскольку $a и $b объявлены внутри 1-й функции, то они не являются частью этой области и недоступны 2-й функции. Моя догадка для решения этой проблемы заключается в том, чтобы объявить $a и $b глобальными, также вне 2-ой функции, то есть внутри 1-ой функции. !! Обратите внимание, что 1-я функция может быть не так очевидна по разным причинам, например, ваш файл (содержащий только 2-ю функцию) включается где-то в тело другой функции в другом файле.

14
ответ дан 1 December 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: